2011-04-18 67 views
1

在閱讀了這麼久之後,我現在有機會用EJB去弄髒自己的手。我在Ubuntu上使用Glassfish + Eclipse 3.7。Emply EJB和Servlet

我首先創建了一個只返回一個問候消息的EJB。然後,我使用InitialContext創建應用程序客戶端以訪問此EJB。這與預期完全相同。

然後,我創建了一個訪問該EJB的servlet。使用@EJB和InitialContext都無法訪問。

當我使用@EJB時,出現404頁面,其描述如下:「請求的資源()不可用。」

當我使用InitialContent時,會引發ClassNotFoundException。顯然,servlet的類加載器無法訪問EJB類。我試圖將EJB jar文件添加到servlet的lib文件夾中,並收到JNDI名稱已存在的錯誤消息。顯然,Glass Fish嘗試將EJB發佈到Servlet的lib文件夾中。

要實現這一目標的唯一方法是使用servlet發佈EJB。這樣,我就可以獲得servlet和一個獨立的應用程序來訪問該EJB。問題在於我需要總是使用帶有EJB的servlet,這是不可取的,因爲我的客戶端可能不想使用Web前端。

無論如何,我的問題是什麼是適當的方式讓servlet訪問在其類加載器外部使用的EJB,而無需重複發佈EJB。

P.S.這也可能是Eclipse配置和使用這些組件的方式。

非常感謝您的幫助。

+0

顯示一些配置和代碼。 – Bozho 2011-05-03 17:19:53

回答

1

幾個要點:

  • 你可能需要把Web應用程序,並在.ear(企業應用程序)的EJB-JAR和部署到Glassfish的
  • 您可能需要在類路徑中的遠程接口(如果它們在運行時不可用,但它們處於編譯時,則無法期望它可以正常工作)
  • NetBeans通常更適合用於創建和部署應用程序的企業內容和嚮導。試一試。
0

經過一段時間的試用後,我發現我可以通過引用它來做「/」。這甚至適用於注射。