首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WAR web应用程序重新部署依赖项

WAR web应用程序重新部署依赖项
EN

Stack Overflow用户
提问于 2015-04-30 10:13:38
回答 1查看 60关注 0票数 0

我对Java很陌生。在部署web应用程序时遇到了一些困难。

我有一个EJB项目,我在Glassfish上部署了这个项目(4.1)。我还有第二个JSF应用程序部署到同一台服务器上。虽然我这样做是考虑到它将被部署到一个单独的服务器上,所以它创建了自己的InitialContext等等来访问EJB。

web应用程序依赖于EJB项目。依赖项在web应用程序的pom中声明。在部署web应用程序时,出于某种原因,它还尝试从其他项目部署EJB。这在javax.naming.NameAlreadyBoundException这样的错误中失败,因为EJB已经单独部署在此服务器上。

如何解决这个问题,以便不会尝试部署WEB应用程序中的EJB依赖项?

更新:解决方案需要重构,这样就不会依赖EJB了。

代码语言:javascript
复制
            Original        

   Project A                 WEB app
 ________________         ____________
| + EJBs         |<------| WEB stuff  |
| + Domain cl.   |        ------------
| + Remote intf. |
 ----------------

===========================================
            Refactored

  _______        ____________
 |  EJBs |----->| Domain cl. |
  -------        ------------
     |                  ^
     |                  |
     |                  |
     v                  |   WEB app
  ______________       ____________
 | Remote intf. | <---| Web stuff  |
  --------------       ------------
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-30 10:17:46

您可以给这个依赖项一个scope of provided

代码语言:javascript
复制
<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容器提供了这些类。此范围仅在编译和测试类路径上可用,且不可传递。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29965005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档