gpt4 book ai didi

java - JSF-2 应用程序中的服务器端计时器

转载 作者:行者123 更新时间:2023-12-04 05:20:16 26 4
gpt4 key购买 nike

在我正在处理的 JSF-2 应用程序中,我需要在用户执行操作时启动服务器端计时器。
此计时器必须与应用程序本身相关,因此它必须在用户 session 关闭时继续存在。
为了解决这个问题,我想使用 java.util.Timer 类在 Application 范围的 bean 中实例化计时器对象。
它会是一个很好的解决方案吗?有没有其他更好的方法来实现这一目标?谢谢

最佳答案

没有 ejb 容器

如果您的容器没有 ejb 功能(tomcat、jetty 等),您可以使用 quartz 调度程序库:http://quartz-scheduler.org/

他们还有一些不错的代码示例:http://quartz-scheduler.org/documentation/quartz-2.1.x/examples/Example1

EJB 3.1

如果您的应用服务器有 EJB 3.1(glassfish、Jboss),则可以使用 java ee 标准方式创建计时器。主要看@Schedule 和@Timeout 注释。

这样的事情可能会涵盖您的用例(当计时器用完时,将调用带有 @Timeout 注释的方法)

import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;

@Stateless
public class TimerBean {
@Resource
protected TimerService timerService;

@Timeout
public void timeoutHandler(Timer timer) {
String name = timer.getInfo().toString();
System.out.println("Timer name=" + name);
}

public void startTimer(long initialExpiration, long interval, String name){
TimerConfig config = new TimerConfig();
config.setInfo(name);
config.setPersistent(false);
timerService.createIntervalTimer(initialExpiration, interval, config);
}
}

关于java - JSF-2 应用程序中的服务器端计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com