我对Java很陌生。在部署web应用程序时遇到了一些困难。
我有一个EJB项目,我在Glassfish上部署了这个项目(4.1)。我还有第二个JSF应用程序部署到同一台服务器上。虽然我这样做是考虑到它将被部署到一个单独的服务器上,所以它创建了自己的InitialContext等等来访问EJB。
web应用程序依赖于EJB项目。依赖项在web应用程序的pom中声明。在部署web应用程序时,出于某种原因,它还尝试从其他项目部署EJB。这在javax.naming.NameAlreadyBoundException
这样的错误中失败,因为EJB已经单独部署在此服务器上。
如何解决这个问题,以便不会尝试部署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 |
-------------- ------------
发布于 2015-04-30 02:17:46
您可以给这个依赖项一个scope
of provided
<dependency>
<groupId>group.id</groupId>
<artifactId>artifact.some.id</artifactId>
<version>1.0</version>
<type>ear</type>
<scope>provided</scope>
</dependency>
这意味着在运行时,依赖项将由容器提供。
见maven doc:
这与编译非常相似,但表示您希望JDK或容器在运行时提供依赖关系。例如,在为构建web应用程序时,您将将对Servlet和相关Java的依赖设置为提供的范围,因为web容器提供了这些类。此范围仅在编译和测试类路径上可用,且不可传递。
https://stackoverflow.com/questions/29965005
复制相似问题