1

我是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>
4

1 回答 1

3

事实上,免费在线书籍“Maven:完整参考”在他们的“冲突解决”部分描述了您的确切案例

您所依赖的 Apache Axis2 库实现了 Java EE 规范的一部分,因此具有对 Geronimo“Java EE 规范”库的编译范围传递依赖。这些规范库仅实现 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 与您的应用程序一起部署应该没有什么害处,但如果它真的困扰您(或者如果您确实遇到了问题),您可以使用<exclusions>块排除传递依赖项:

<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 Jars。

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

于 2013-06-27T13:38:22.050 回答