2012-02-23 48 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

相關問題