我们已经在许多单独的war文件中开发了我们的系统,并在源代码中使用@ Stateless,@ ApplicationScoped,@ Inject。
现在我想制作这样的耳朵文件, 但看起来我们不能将ejb模块中的Bean注入war文件。
EAR
\-lib
| \- utilityA.jar
| \- utilityB.jar
| \- ...
|- ejb-jarC.jar
|- ejb-jarD.jar
|- ...
|- warE.jar
|- warF.jar
我发现的问题:
(1)使用上述结构,当@ApplicationScoped bean调用initialize方法时,它会等待无状态组件进入init。
(2)我尝试在application.xml中添加initialize-in-order我遇到了其他问题,即bean没有VIEW LOCAL。
我们有没有办法在ejb模块中配置bean的[可见],以便战争可以使用它?
答案 0 :(得分:0)
我自己找到解决方案来制作耳朵文件。 但由于项目的复杂性,我必须解决很多问题。
这是寻找像我这样的解决方案的人的一个关键点 + JPA(jar-file):您需要创建一个仅包含persistence.xml的持久性模块。如果要在ejb模块中加载实体,请将jar文件放入persistence.xml + Application Scoped bean和init方法:在wildfly / jboss中,将为每个war应用程序创建ApplicationScoped bean。 如果该bean引用其他ejb模块中的bean,则不应使用init方法。如果你想在战争开始时使用init,可以编写一个ContextListner并将其添加到web.xml中 +所有与网络相关的处理都应该在战争中打包而不是在ejb模块中。
如果您有疑问,可以给我发消息,以便我们讨论。