我正在尝试在不使用任何数据库的情况下在Java EE应用程序中安排任务,包括像derby这样的任何内存数据库。我之所以这样做,是因为我必须在没有数据库的集群上部署我的应用程序。
要重现我遇到的问题,这是一个最小的java示例:
package testPackage;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Startup
@Singleton
public class Scheduler {
@Schedule(second="*", persistent=false)
public void hello() {
System.out.println("Hello");
}
}
在本地禁用jdbc/__TimerPool
时,我会遇到与尝试在群集上部署时相同的错误:
这导致异常:javax.naming.NamingException: Lookup failed for 'jdbc/__TimerPool' in SerialContext
。但是,如果删除@Schedule注释,异常就会消失,这意味着应用程序本身不需要TimerPool。
是否可以在Java EE中使用没有任何数据库的非持久性调度?