程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

@ Singleton,@ Startup,@ PostConstruct在EJB3.1和Glassfishv3.0.1上不起作用

发布于2021-03-26 13:31     阅读(1434)     评论(0)     点赞(15)     收藏(3)


我对此设置有问题,甚至无法查看日志。

这是我的@Singleton @StartupEJB:

@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>

解决方案


您具有无效的bean类型作为@DependsOn的属性DependsOn用于表达两个Singleton会话Bean之间的依赖性,而不是Singleton和Stateless之间的依赖性。您应该将SchedulerEJB更改为Singleton或删除依赖项。

如果您决定将SchedulerEJB更改为Singleton,则也不需要@DepensOn,因为(根据EJB 3.1规范):

请注意,如果一个Singleton仅需要从其PostConstruct方法中调用另一个Singleton,则不需要显式的排序元数据。在这种情况下,第一个Singleton将仅使用ejb引用来调用目标Singleton。在那里,获取ejb参考(通过注入或查找)不一定意味着实际创建了相应的Singleton bean实例。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/129218/f5010c8cc05dc20f0080/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)