我有一个EAR
Example.war,ExampleEAR.jar,/ lib /persist.jar
。
现在在启动服务器时,有一个StartUpEJB.java,它以@Startup注释启动。现在,StartUPEJB指的是Persist.jar文件中存在的PersistMgrEJB.java。但我收到以下错误。
引起:javax.ejb.NoSuchEJBException:在单例会话bean初始化期间发生错误ExampleEAR#ExampleEJB.jar#StartUPEJB,导致丢弃单例实例。嵌套异常是:javax.ejb.EJBException:无法解析ExampleEAR应用程序的ExampleEAR.jar模块中的StartUpEJB组件中的EJB引用;嵌套异常是:com.ibm.ejs.container.EJBNotFoundException:具有接口com.test.myejb.PersistMgrEJB的EJB在应用程序ExampleEAR中不存在。 在com.ibm.ejs.container.util.ExceptionUtil.NoSuchEJBException(ExceptionUtil.java:511)
答案 0 :(得分:1)
您可以通过在 application.xml 中指定模块部署的顺序来更改模块部署的顺序。
<initialize-in-order>true</initialize-in-order>
<display-name>Example</display-name>
<module>
<ejb>persist.jar</ejb>
</module>
<module>
<ejb>ExampleEAR.jar</ejb>
</module>
<module>
<web>
<web-uri>Example.war</web-uri>
<context-root>Example-war</context-root>
</web>
</module>
在EJB 3.1中,支持使用@DependsOn注释初始化依赖组件。