@Singleton @Startup依赖于@Stateless EJB

时间:2015-07-08 11:38:29

标签: java java-ee ejb

我有以下设置:

@Singleton
@Startup
@DependsOn(value="DataSourceHandler")
public class TimerTask {

    @EJB(name = "DataSourceHandler")
    DataSourceHandler dataSourceHandler;
}

@Stateless(name = "DataSourceHandler")
public class DataSourceHandler {
    ... database operations
}

timertask每30分钟运行一次,并在DataSourceHandler EJB的帮助下执行数据库操作。

这里的问题是我无法将EJB注入Singleton Timertask,因为单例只能依赖于其他单例。 other questions中提出的解决方案并不适用于我:

  • 我不能使DataSourceHandler成为单身人士,因为它也用于应用程序的其他部分而不是多线程保存。
  • 我无法从TimerTask中删除单身人士,因为@Startup注释需要

如何将无国籍者注入单身人士?

1 个答案:

答案 0 :(得分:2)

不要这里需要一个dependsOn annoatation。 @dependson用于以下情况:

  

用于表示单例之间的初始化依赖关系   组件。

由于DataSourceHandler是一个EJB,因此在您的单例注入此EJB时,它将由容器实例化。