2011-02-09 80 views
1

如果是的話,你如何做到這一點?你可以在庫中封裝一個ejb攔截器嗎?

我有一個ejb @javax.interceptor.AroundInvoke攔截器,我喜歡將它移入庫中以供重用。我將代碼移動到一個庫中,修復了maven中的依賴關係,現在所有的編譯都已經完成。只有在部署我收到以下錯誤信息:

09.02.2011 14:19:48 com.sun.logging.LogDomains$1 log 
SCHWERWIEGEND: Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method 
java.lang.RuntimeException: java.lang.ClassNotFoundException: 

回答

2

JSR 318:企業JavaBeans,3.1版 - EJB核心合同和需求

20.3包裝要求

ejb-jar文件或.war文件必須包含 ,包含或由, 參考,th每個 企業bean的e類文件如下:

  • 企業bean類。
  • 企業bean業務接口,web服務端點 接口,家庭和組件 接口。
  • 攔截器類。
  • 如果bean是實體bean,則爲主鍵類。

我們說一個.jar文件包含第二個文件「通過引用」如果 第二個文件是在類路徑命名 在 的清單文件屬性引用.jar文件或包含 在 中命名的另一個.jar文件中引用.jar 文件的 清單文件中的Class-Path屬性。

所以我會說是的,你可以將攔截器類打包到庫.jar文件中。

檢查:1)該庫實際上已打包並部署到ejb-jar文件中;和2)庫文件.jar在Manifest文件中被引用,如上所述。

+0

謝謝。將` true`添加到`maven-ejb-plugin`中是個訣竅。有趣的是,jar本身並沒有被添加到ejb-jar中。您必須將庫添加到EAR文件相關性中,以便將該庫添加到企業歸檔文件中。爲那些發現這個問題的人提示:不要忘記'maven-ear-plugin`設置中的' lib` – Martin 2011-02-11 14:16:29