2012-02-23 51 views
0

我在WebSphere 7上使用Eclipse 3.4(又名IBM RAD)构建了一个简单项目。什么是将EJB放入JPA项目的“正确”方式?

我的工作区中有一个EAR项目,一个EJB项目和一个JPA项目。

短版:

在我的EJB项目的EJB是引用我的JPA项目中的EJB,但它给了我一个EJBNotFoundException错误。

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

UPDATE

一位同事告诉我的EJB应在EJB项目,而不是JPA项目。这是我做错了吗?希望对此有第二个意见,谢谢。

长版:

在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

仅供参考,我挖更深,了解了更多。我添加了一个新的疑问,更具体decribes我的问题:

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

+0

所以,你考虑**这**作为你的问题的答案?也许如果这是答案,你至少可以试着解释你是如何解决**你的问题的? – jFrenetic 2012-02-28 20:09:56

+0

我没有解决问题。 TestJPA项目中的EJB仍然不可见,我不得不将它们移动到TestEJB项目。我将这个“答案”标记为“正确”,因为与新简化问题的链接是我必须为我的问题找到解决方案的唯一途径。你的回答(上面)没有帮助;也许是因为你的指令适用于Eclipse 3.5或更高版本。就像我在问题中所说的那样,我使用的是Eclipse 3.4。 – 2012-02-28 21:25:45

+0

关键是你可以等到你找到解决方案,然后发布并接受为答案。你刚刚接受的并不是一个答案。 – jFrenetic 2012-02-29 17:59:00

1

你必须在ear文件的根来打包ejb-jar,并把jpa-jarlib目录。当您创建JPAEJB Project并将它们添加到单独的Enterprise Java Project时,通常Eclipse会小心打包。

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

enter image description here

+0

我看到在Eclispe的这个错误,虽然。我还没有构建和部署EAR文件。任何进一步的想法或细节将有所帮助,谢谢! – 2012-02-23 17:47:07

+0

'我还没有建立和部署EAR文件'你是什么意思?你说过,当你试图在服务器上部署它时,你会得到这个异常,对吧? – jFrenetic 2012-02-23 18:06:21

+0

我的意思是我没有手动将EAR文件部署到WebSphere。我在Eclipse IDE中运行应用程序(在服务器列表中使用WebSphere 7)时出现错误。你懂我的意思吗? – 2012-02-23 18:18:24

相关问题