【问题标题】:Axis 2 dependency and geronimo jars in war file after built with maven使用 maven 构建后,war 文件中的 Axis 2 依赖项和 geronimo jars
【发布时间】:2013-06-18 22:06:16
【问题描述】:

我是axis新手,请耐心等待。 我已经从 WSDL 端点生成了 java 文件,每个 java 文件都有

implements org.apache.axis2.databinding.ADBBean{

这意味着我需要在编译范围内的maven pom.xml 中依赖axis2.jar(如果我错了,请纠正我)。

但是axis2.jar 依赖也下载了很多geronimo 文件。但我正在使用JBOSS。我实际上并不希望在我的战争中使用 geronimo 文件。

真的有必要拥有这些 geronimo 罐子吗?或者我在 pom.xml 中指定axis2.jar 编译时依赖时可能做错了什么?

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.4</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-api</artifactId>
        <version>1.2.14</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-impl</artifactId>
        <version>1.2.14</version>
    </dependency>

    <dependency>
        <groupId>org.apache.ws.commons.schema</groupId>
        <artifactId>XmlSchema</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.neethi</groupId>
        <artifactId>neethi</artifactId>
        <version>3.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jta_1.1_spec</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
    </dependency>

【问题讨论】:

  • 是的,感谢您的回答。我可以使用提供的范围并将所有这些 geronimo jar 移动到 jboss lib 文件夹,但是在 jboss 中拥有另一个容器运行时是否正确?我认为实际上应该有一个带有 jboss 运行时依赖项的 jboss 的axis2 版本,但似乎没有。
  • 我对 JBoss 的经验为零,但谷歌搜索“axis2 jboss”发现了这个:wso2.com/library/3001 - 祝你好运!
  • 谢谢。 (我现在你认为我在谷歌搜索之前会问问题,但实际上我不是)。我不需要在 jboss 中部署axis2,我将它嵌入到我的战争中。它需要另一个服务器运行时。这很可疑,因为我找不到任何有关此的信息。无论如何,你正在努力提供帮助,我很感激。
  • 好的,回到这个案例。您能否更新您的问题以包含 POM 中的&lt;dependency&gt;
  • 添加了 pom.xml 的axis2部分。

标签: maven jboss wsdl axis2


【解决方案1】:

事实上,免费在线书籍“Maven: The Complete Reference”在他们的"Conflict Resolution"部分描述了您的确切案例

您所依赖的 Apache Axis2 库实现了 Java EE 规范的一部分,因此对 Geronimo“Java EE 规范”库具有 compile 范围传递依赖。这些规范库仅实现 Java EE 标准。因此,如果您检查(例如)的内容

jar -tf geronimo-javamail_1.4_spec-1.7.1.jar

你会发现(除其他外)。

javax/
javax/mail/
javax/mail/Address.class
javax/mail/AuthenticationFailedException.class
javax/mail/Authenticator.class
(etc.)

因此,将这些 Geronimo jar 与您的应用程序一起部署应该没有什么害处,但如果它真的困扰您(或者如果您确实遇到了问题),您可以使用 &lt;exclusions&gt; 块排除传递依赖项:

<dependency>
    <groupId>org.apache.ws.commons.axiom</groupId>
    <artifactId>axiom-api</artifactId>
    <version>1.2.14</version>
    <exclusions>
      <exclusion>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-activation_1.1_spec</artifactId>
      </exclusion>
      <exclusion>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-javamail_1.4_spec</artifactId>
      </exclusion>
    </exclusions>
</dependency>

JBoss 提供自己的规范 jar,但除非遇到实际问题,否则您不必费心排除 geronimo jar。

或者,如果您确定这是您的部署容器,您可以考虑只使用 JBoss Web Services

【讨论】:

  • 非常感谢您的详细解释!
猜你喜欢
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 2014-11-04
相关资源
最近更新 更多