我是新来的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