我有一个EJB X实现接口IX;我在WebSphere中部署了一个Web服务Z;其中一个类声明如下:
@EJB IX ix;
当X和IX与应用程序位于同一源代码树中时,这很好。我把它作为@Singleton和@Startup,虽然我已经把它改成了@Stateful。
应用程序有一个与其他Web服务共享的jar,第二个Web服务也可以使用X.所以我想将X移动到每个Web服务使用的jar(或其他)。
两个Web服务当前都使用了一个jar,所以我将X,IX和另一个依赖类移动到该jar的源树。我编译了jar并将其导出,覆盖了之前使用过的jar。我已打开它并验证了三个新类。
当我在服务器中运行应用程序(RAD / eclipse)时,我收到一条错误消息:
com.ibm.ejs.container.EJBNotFoundException:应用程序Z中不存在接口IX的EJB。
如上所述,我在应用程序的一个类中声明为@EJB,在IX及其支持类位于同一源代码树中的情况下工作。
jar文件的RAD / eclipse项目最初没有EJB方面,所以我补充说;我重新编译等等,得到同样的错误。如果需要,我可以将内容添加到ejb-jar.xml,但我认为这就是Annotations的用途。但也许有注释没有做的事情,或者我需要添加一些东西,现在豆子在另一个罐子里。
我认为我错过了配置或声明这个的一些方法。这个信息足以告诉我它是什么吗?
答案 0 :(得分:0)
EJB X必须在EJB jar中,而不是实用程序jar才能使注释工作。只将接口IX放在实用程序jar中,并使所有其他项目 - EJB,WS1和WS2 - 依赖于该jar(例如将jar添加到EAR / lib)。打包EAR中的所有项目。