我在使用appclient腳本調用glassfish 3.1的EJB上部署耳朵。 EJB有一個方法,它的參數是在單獨的庫中定義的模型對象。在appclient jar中包含模型庫
如果我想使用appclient腳本,我有一個調用EJB的主方法的Main類。 這也被放入一個單獨的jar中,也被部署到玻璃魚。
由於模型對象位於一個單獨的庫中,我需要它在客戶端jar中,但也在EJB中。 所以我需要在客戶端jar中以某種方式引用它。
客戶端jar是一個jar(杜),所以我不能添加其他罐子。 Java EE 6文檔說,我應該創建一個庫,但如果我這樣做,它不會部署,因爲耳朵至少需要一個ejb或Web模塊,而我的客戶機庫都沒有。
我找到的解決方案是使用程序集插件/ jar -with-dependencies。這個插件創建一個新的jar包含所有依賴關係的所有類。
此解決方案的工作原理,但我想知道如果這是要走的路或我錯過了明顯的東西,因爲我無法想象這是必需的。 EJB通常有模型對象作爲參數,所以這種情況會發生很多。
所以我的問題是:有沒有辦法告訴glassfish引用應用程序客戶端jar和ejb jar之間的共享庫。
我也使用maven。我將項目分爲1)接口類,2)數據庫的jpa項目,3)數據庫的另一個jpa項目,以及4)使用其他項目的EJB的項目。最後,我有一個使用jpa類(模型)的appclient項目,並使用遠程接口調用EJB。我可以使用osgi類型選項來部署它們,但執行appclient時仍然會出現錯誤。你在使用osgi maven插件嗎?如果是的話,你可以發佈一個例子嗎? – thehpi
沒有'osgi maven插件',我真的只是指定了' '標籤...... –
Hank
這很奇怪,因爲我得到一個錯誤:'找不到包裝的生命週期映射:'包'。在組件庫中找不到組件描述符:org.apache.maven.lifecycle.mapping.LifecycleMappingbundle'。你可以發佈你的pom嗎? – thehpi