我遇到此设置问题,我甚至无法查看日志。
这是我的@Singleton
@Startup
EJB:
@Singleton
@Startup
@DependsOn("SchedulerEJB")
public class SchedulerStartUp {
private static Logger log = Logger.getLogger(SchedulerStartUp.class);
@EJB
SchedulerEJB schedEJB;
@PostConstruct
public void atStartup() {
log.info("startUp")
System.out.println("startUp");
schedEJB.cancelTimer("EBlastScheduler");
schedEJB.createTimer("*/1", "*", "*");
}
}
SchedulerEJB
:
@Stateless
public class SchedulerEJB {
@Resource
TimerService timerService;
public cancelTimer(String timerInfo){/*...*/}
public createTimer(String sec, String min, String hour) {/*...*/}
@Timeout
public void execute(Timer timer) {/*...*/}
}
Maven pom:
//Been Using Glassfishv3.0.1 and EJB3.1 with a dependency of:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
答案 0 :(得分:6)
您拥有无效的bean类型作为@DependsOn的属性。 DependsOn用于表示两个Singleton会话bean之间的依赖关系,而不是Singleton和Stateless之间的依赖关系。您应该将SchedulerEJB更改为Singleton或删除依赖项。
如果您决定将SchedulerEJB更改为Singleton,那么也不需要@DepensOn,因为(来自EJB 3.1规范):
请注意,如果一个Singleton只需要调用另一个Singleton 从它的PostConstruct方法,没有明确的排序元数据 需要。在这种情况下,第一个Singleton只会使用ejb 引用调用目标Singleton。在那里,收购 ejb引用(通过注入或查找)不会 必然意味着相应的单身人士的实际创造 bean实例。