我是新來的Java。在部署Web應用程序時遇到一些問題。WAR網頁應用重新部署依賴關係
我有一個EJB項目,我在Glassfish(4.1)上部署。 我還有第二個部署到同一服務器的JSF WEB應用程序。 雖然我正在考慮將它部署到一個單獨的服務器,因此它會創建它自己的InitialContext等來訪問EJB。
Web應用程序依賴於EJB項目。依賴關係在web應用程序的pom中聲明。 部署Web應用程序時,由於某種原因,它還嘗試從其他項目部署EJB。 由於EJB已經在此服務器上單獨部署,因此失敗,出現錯誤,如javax.naming.NameAlreadyBoundException
。
如何解決這個問題,這樣就不會嘗試部署來自WEB應用程序的EJB依賴關係?
更新:該解決方案需要重構,因此EJB不會被依賴。
Original
Project A WEB app
________________ ____________
| + EJBs |<------| WEB stuff |
| + Domain cl. | ------------
| + Remote intf. |
----------------
===========================================
Refactored
_______ ____________
| EJBs |----->| Domain cl. |
------- ------------
| ^
| |
| |
v | WEB app
______________ ____________
| Remote intf. | <---| Web stuff |
-------------- ------------
這實際上讓我部署到同一臺服務器。謝謝。 現在,當我嘗試部署到另一臺服務器時,我從WEB應用程序中得到'java.lang.NoClassDefFoundError'。 我可以將EJB依賴項聲明回到'compile'範圍,但是這些EJB也會被部署,並且在其他服務器上不需要它們。 有沒有辦法阻止EJB依賴性部署,但包括類? EJB總是遠程檢索。 – Varis
聽起來對我來說,您需要爲部署到同一服務器時設置不同的Maven配置文件,而在部署到單獨的服務器時需要另一個配置文件。然後,您將相關配置文件 – KernelKoder
的相關性設置爲所需的範圍,我認爲我發現了該問題。 EJB項目在一個項目中具有EJB,域類和遠程接口。我把它分解了。 Web應用程序僅依賴於遠程接口和域類。用ascii uml更新了問題。 – Varis