答案 0 :(得分:1)
它类似于玻璃鱼,但我不确定。
很难说,特别是因为您没有为NoClassDefFoundError
提供堆栈跟踪,但无论如何情况似乎都不同。
问题1:使用战争中包装的ejb bean是否合格(规范令人遗憾)?
当然。您可以将EJB类放在WEB-INF/classes
中,也可以将它们打包为EJB-JAR并将它们放在WEB-INF/lib
中。我有几个演示应用程序这样做。
Q2:我应该通过ejb-jar.xml描述一些配置吗?
不,没有什么能迫使你这样做。
问题3:可能导致问题的原因是什么?
问题是我无法重现问题...我已经在启用了[ejb, jpa, web, webservices, weld]
引擎的webapp中部署了您的EJB(我只是将其修改为在预定方法中插入我的实体)它只是有效。使用最新版本的GlassFish 3.0.1进行测试。所以我怀疑你身边有错误或配置问题。
以防万一,你能提供jar xfv yourapp.war
的输出(还会显示你的web.xml
)吗?
答案 1 :(得分:1)
请参阅: CDI with ejb 3.1 , weld-logger on glassfish v3.0.1 我在那里描述重现这个问题的步骤。
据我所知 - 没有可能使用CDI&将一个Web模块中的EJB打包在ear存档中并部署t glassfish 3.0.1。
目前的设计是将ejb和war模块分开 - 至少它对我有用。
答案 2 :(得分:0)
WAR中打包的EJB使用EE6的web / lite配置文件。据我所知,此配置文件不支持计时器和其他一些功能。 因此,如果您想使用计时器,您必须使用传统的ejbjar + war + ear方式打包ejbs。
我找不到网络资料的参考资料,这是最接近比较的资料:http://www.theserverside.com/news/1321142/Part-Three-New-Features-in-EJB-31
编辑:我认为,war包装实际上是在jsr 318,EJB 3.1中描述的。由于我在规范的该部分中找不到对可用功能的任何限制,因此计时器也应该在战争中打包的ejb中工作。