0

我有一个具有
Example.war 、 ExampleEAR.jar 、 /lib/persist.jar的 EAR

现在,在服务器启动期间,有一个 StartUpEJB.java,它会以 @Startup 注释的方式启动。现在 StartUPEJB 指的是 PersistMgrEJB.java,它存在于 persist.jar 文件中。但我收到以下错误。

原因: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)

4

1 回答 1

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注释初始化依赖组件。

于 2013-07-09T06:35:23.513 回答