繁体   English   中英

将预定的EJB部署到Glassfish服务器时出现问题

[英]Problem deploying scheduled EJB to Glassfish server

我有一个想部署到我的Glassfish 3.1应用程序服务器上的EJB的怪异(?)问题。

我有这个bean,应该使用@Schedule批注在Glassfish中连续执行。 在我向访问数据库的EJB添加一些代码之前,这对我来说效果很好。

@Stateless
public class MyBean implements MyBeanLocal {

    @Schedule(second = "*", minute = "*", hour = "*")
    public void initiateProcess() {

        MyCoordinator mc = new MyCoordinatorImpl();
        List<Entity> entities = mc.methodAccessingDB();
    }
}

这是我的EJB,每秒执行一次。 上面我怎么说,如果调用ac.methodAccessingDB() ,则可以部署此EJB并成功执行。 这意味着,我什至无法将其部署到Glassfish。 玻璃鱼告诉我

无效的ejb jar [...]:它包含零ejb。 注意:1.一个有效的ejb jar需要至少一个会话,实体(1.x / 2.x样式)或消息驱动的bean。 2. EJB3 +实体bean(@Entity)是POJO,请将其打包为库jar。 3.如果jar文件包含用EJB组件级别注释(@ Stateless,@ Stateful,@ MessageDriven,@ Singleton)注释的有效EJB,请检查server.log以查看注释是否已正确处理。请参阅服务器。登录以获取更多详细信息。

如果我只写List<Entity> entities = null; 而不是List<Entity> entities = ac.methodAccessingDB(); 我可以部署它,并且运行良好。

好的,现在我找到了解决该问题的方法。 EJB在部署的版本上找不到类。 解决方案是将所有内容打包到一个耳朵项目中。 我正在使用maven,所以我在最后3个项目中创建了。

  • 一个用于EJB <packaging>ejb</packaging>
  • 一个用于EAR <packaging>ear</packaging>
  • 第三个父项目,它将两个其他项目集成为<module>

然后,我将打包好的耳朵放到Glassfish上,计时器开始计时,一切都准备就绪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM