[英]Error Deploying Java 8 Jars(EJB) With Lambdas - glassfish server 4.1
[英]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个项目中创建了。
<packaging>ejb</packaging>
<packaging>ear</packaging>
<module>
。 然后,我将打包好的耳朵放到Glassfish上,计时器开始计时,一切都准备就绪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.