2017-08-29 123 views
0

我有一個EAR文件,其中包含3個WAR和一些在lib /文件夾中的通用依賴關係。其中一個依賴項具有一個帶有調度方法的EJB,但似乎服務器無法識別它。日誌中沒有證據,沒有執行代碼。當EAR內部還存在EAR時,WildFly無法識別EJB計時器(@Schedule)

但是當我用WEB-INF/lib中的同一個jar部署一個簡單的war時,它就可以工作。我已經試圖用jar包作爲ejb-jar和maven插件,但是沒有成功。

關於必須進行什麼的任何想法?

回答

0

EAR的lib目錄中的罐子不被認爲是EJB罐子,在這方面它們的內容在部署時不被考慮。 lib目錄的存在只是爲了更容易地提供庫類,它們的類自動對EAR文件中的所有模塊可見。

您的EAR文件包含一個META-INF/application.xml文件,其中列出了它包含的各種modules。在Java EE 6之前,只有ejb模塊被考慮用於潛在的EJB。 Java EE 6和更新版本在該列表中添加了Web模塊。網絡模塊的WEB-INF/lib目錄中的所有jar都被認爲是web模塊的一部分,即使它們包含ejb-jar。在Web模塊中找到的任何ejb-jar.xml文件都合併在一起。即使Web模塊作爲獨立的WAR文件進行部署,也是如此。

+0

你說得對。將jar作爲ejb模塊放入EAR中解決了這個問題。謝謝。 –