我有一个在WebSphere 7上使用Eclipse 3.4(又名IBM RAD)构建的简单项目。
我的工作区中有一个EAR项目,一个EJB项目和一个JPA项目。
简短版本:
我的EJB项目中的一个ejb在我的JPA项目中引用了EJB,但它给我一个EJBNotFoundException错误。
将EJB放入JPA项目的“正确”方法是什么?
一位同事告诉我EJB应该在EJB项目中,而不是JPA项目。这就是我做错了吗?想对此提出第二意见,谢谢。
LONG VERSION:
在JPA项目中,我有我的实体/域对象(例如Workflow.java),我有一个DAO(例如WorkflowDAO.java),它注释为带有@Stateless的EJB。
在EJB项目中,我有一个ejb(例如WorkflowService.java),注释为带有@Stateless的@EJB。
WorkflowService.java引用WorkflowDAO,如下所示:
@Stateless
public class WorkflowService /*...*/
@EJB
private WorkflowDAO workflowDAO; /*...*
问题是,当我部署到服务器时,我收到以下错误:
com.ibm.ejs.container.EJBNotFoundException,带有接口test.WorkflowDAO的EJB在应用程序testEAR中不存在。
非常感谢任何帮助,谢谢!
罗布
答案 0 :(得分:1)
您必须将ejb-jar
打包到ear
文件的根目录,并将jpa-jar
放在lib
目录中。通常,Eclipse会在您创建JPA
和EJB Project
时将包装添加到单独的Enterprise Java Project
中。
<强>更新强>:
从你的评论中得出结论,你做错了。您应该运行EAR Project
,并添加JPA
和EJB
个项目。您应该检查EAR项目属性并确保Deployment Assembly
选项卡上列出的JPA和EJB项目。如果没有,您可以在那里添加它们。请参见屏幕截图:
答案 1 :(得分:0)
仅供参考,我已经深入挖掘并学到了更多。我添加了一个新问题,更具体地描述了我的问题:
why can't my EAR project see the annotated EJBs and Entities in my JPA project?