将EJB放入JPA项目的“正确”方法是什么?

时间:2012-02-23 17:22:49

标签: eclipse java-ee ejb

我有一个在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中不存在。

非常感谢任何帮助,谢谢!

罗布

2 个答案:

答案 0 :(得分:1)

您必须将ejb-jar打包到ear文件的根目录,并将jpa-jar放在lib目录中。通常,Eclipse会在您创建JPAEJB Project时将包装添加到单独的Enterprise Java Project中。

<强>更新: 从你的评论中得出结论,你做错了。您应该运行EAR Project,并添加JPAEJB个项目。您应该检查EAR项目属性并确保Deployment Assembly选项卡上列出的JPA和EJB项目。如果没有,您可以在那里添加它们。请参见屏幕截图:

enter image description here

答案 1 :(得分:0)

仅供参考,我已经深入挖掘并学到了更多。我添加了一个新问题,更具体地描述了我的问题:

why can't my EAR project see the annotated EJBs and Entities in my JPA project?