如何制造战争可以从耳朵中看到并注入豆子

时间:2018-03-15 08:19:28

标签: javabeans war ear

我们已经在许多单独的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的[可见],以便战争可以使用它?

1 个答案:

答案 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模块中。

如果您有疑问,可以给我发消息,以便我们讨论。