2017-08-29 86 views
0

我有一个EAR文件,其中包含3个WAR和一些在lib /文件夹中的通用依赖关系。其中一个依赖项具有一个带有调度方法的EJB,但似乎服务器无法识别它。日志中没有证据,没有执行代码。当EAR内部还存在EAR时,WildFly无法识别EJB计时器(@Schedule)

但是当我用WEB-INF/lib中的同一个jar部署一个简单的war时,它就可以工作。我已经试图用jar包作为ejb-jar和maven插件,但是没有成功。

关于必须进行什么的任何想法?

回答

0

EAR的lib目录中的罐子不被认为是EJB罐子,在这方面它们的内容在部署时不被考虑。 lib目录的存在只是为了更容易地提供库类,它们的类自动对EAR文件中的所有模块可见。

您的EAR文件包含一个META-INF/application.xml文件,其中列出了它包含的各种modules。在Java EE 6之前,只有ejb模块被考虑用于潜在的EJB。 Java EE 6和更新版本在该列表中添加了Web模块。网络模块的WEB-INF/lib目录中的所有jar都被认为是web模块的一部分,即使它们包含ejb-jar。在Web模块中找到的任何ejb-jar.xml文件都合并在一起。即使Web模块作为独立的WAR文件进行部署,也是如此。

+0

你说得对。将jar作为ejb模块放入EAR中解决了这个问题。谢谢。 –