32

我想用 Maven2 构建一个 Axis2 客户端(我只是访问一个远程 Web 服务,我没有实现一个!),我不想在我的项目中添加 21MB 的 JAR。当我使用 ADB 转换 WSDL 时,我必须在 pom.xml 中放入什么来编译代码?

4

9 回答 9

30

客户端的最小罐子是:

  • 激活-1.1.jar
  • axiom-api-1.2.8.jar
  • axiom-impl-1.2.8.jar
  • axis2-adb-1.5.1.jar
  • axis2-kernel-1.5.1.jar
  • axis2-transport-http-1.5.1.jar
  • axis2-transport-local-1.5.1.jar
  • commons-codec-1.3.jar
  • commons-httpclient-3.1.jar
  • commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • mail-1.4.jar
  • neethi-2.0.4.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.3.jar

下面的 STAX jar 不是 Axis2 1.5.1 版本的一部分,如果您的 JDK 版本低于 6,则需要:

  • stax-1.2.0.jar
  • stax-api-1.0.1.jar
于 2010-08-27T03:27:20.663 回答
16

注:此回复由 Aaron Digulla 本人提供。以下是他自己回答的确切文本。)

在 maven2 中,使 ADB 客户端工作的最小依赖项(“ADB”,就像您从 WSDL 创建 Java 类的方式一样)是这样的:

    <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>1.4.1</version>
    </dependency>
    <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb</artifactId>
            <version>1.4.1</version>
    </dependency>

嗯...似乎我无法将其标记为正确答案。有人可以复制这个,以便我可以标记他的帖子吗?

于 2008-11-26T18:01:59.917 回答
14

也必须添加运输工具

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.4</version>
</dependency>
<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-transport-local</artifactId>
    <version>1.5.4</version>
</dependency>
<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-transport-http</artifactId>
    <version>1.5.4</version>
</dependency>
于 2011-04-18T21:50:04.663 回答
12

总结对工作客户的最小依赖


  • axiom-api-1.2.14.jar
  • axiom-impl-1.2.14.jar
  • axis2-adb-1.6.3.jar
  • axis2-kernel-1.6.3.jar
  • axis2-transport-http-1.6.3.jar
  • axis2-transport-local-1.6.3.jar
  • commons-codec-1.3.jar
  • commons-httpclient-3.1.jar
  • commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • mail-1.4.jar
  • neethi-3.0.2.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.7.jar

下面列出了带有详细信息的最小依赖项

客户端存根使用 %AXIS2_HOME%\bin\WSDL2Java 工具针对给定 WSDL 生成的 ServiceClient 类(要生成,您需要类路径上的所有轴 jar,通过设置 AXIS_HOME 最容易实现)

客户端存根在编译时所需的类


  • axiom-api-1.2.14.jar -- org.apache.axiom.om.OMElement、org.apache.axiom.soap.SOAPEnvelope、org.apache.axiom.soap.SOAPFactory、org 的客户端存根在编译时需要.apache.axiom.om.OMNamespace
  • axis2-adb-1.6.3.jar -- org.apache.axis2.databinding.ADBException 的客户端存根在编译时需要
  • axis2-kernel-1.6.3.jar -- org.apache.axis2.AxisFault 类的客户端存根在编译时需要

在运行时成功调用客户端存根所需的类

  • axiom-impl-1.2.14.jar(没有这个 org.apache.axiom.om.OMException: No meta factory found for feature 'default';这通常意味着 axiom-impl.jar 不在类路径中)
  • axis2-transport-http-1.6.3.jar(没有这个 org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender)
  • axis2-transport-local-1.6.3.jar(没有这个 org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar(没有这个 java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException)
  • commons-httpclient-3.1.jar(没有这个 org.apache.axis2.deployment.DeploymentException: org/apache/commons/httpclient/HttpException)
  • commons-logging-1.1.1.jar(没有这个 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory)
  • httpcore-4.0.jar(没有这个 java.lang.NoClassDefFoundError: org/apache/http/HttpResponseFactory)
  • mail-1.4.jar(没有这个 java.lang.NoClassDefFoundError: javax/mail/internet/ParseException)
  • neethi-3.0.2.jar(没有这个 java.lang.NoClassDefFoundError: org/apache/neethi/PolicyComponent)
  • wsdl4j-1.6.2.jar(没有这个 java.lang.NoClassDefFoundError: javax/wsdl/WSDLException)
  • XmlSchema-1.4.7.jar(没有这个 java.lang.ClassNotFoundException: org/apache/ws/commons/schema/XmlSchema)

org.apache.axis2.AxisFault: Connection denied: connect -> ERROR ONLY if the web service is not up or access for some other reason

请注意确切的版本,但是行为将足够通用,受不同版本的打包更改的影响,因此,上面提到了 FQCN -

轴版本 - 1.6.3

Tomcat 版本 - Apache Tomcat/7.0.64

Servlet 版本 - 3.0

java.runtime.version - 1.7.0_79-b15

于 2015-09-26T17:03:27.357 回答
5

如果没有axis2-xmlbeans,Axis2 1.6.2 版对我不起作用(尽管这可能与我也在使用axis2-wsdl2code-maven-plugin插件和xmlbeans 作为我的数据绑定框架这一事实有关)。我有以下POM:

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-kernel</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-adb</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.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-xmlbeans</artifactId>
        <version>1.6.2</version>
    </dependency>
于 2012-12-06T17:09:50.837 回答
1

如果您的客户端在 Java 6 上运行,请考虑使用 JAX-WS 来使用 WS。JAX-WS 使用 JAXB 标准进行绑定,您不需要为客户端添加一个额外的 jar。

于 2008-12-02T10:26:45.670 回答
1

实际上,您只需要axis-abd依赖项,因为axis2-kernel是axis-abd的子依赖项。因此,您可以总结为:

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.1</version>
</dependency>
于 2009-12-30T18:27:03.643 回答
1

在 Axis2 版本 1.5.1 中,maven 模块似乎已经过重组。

我的 Groovy 脚本(使用 ADB 绑定)具有以下依赖项:

@Grapes([
    @Grab(group='org.apache.axis2', module='axis2-kernel', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-adb', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-transport-local', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-transport-http', version='1.5.1'),
])

这些都是有逻辑的。在生成我的存根时,我可以使用替代绑定框架,或者可以使用替代 HTTP 传输协议。

此答案中的示例代码

于 2010-04-02T00:17:23.640 回答
0

对于那些使用Gradle的人,这里我排除了不必要的库:

dependencies {

    ext.compileEx = { lib, exModules, exGroups ->
        compile (lib) {
            exModules.each { exclude module : "$it" }
            exGroups.each  { exclude group: "$it" }
        }
    }

    List axisExModules = [ 'axiom-compat', 'jaxen', 'apache-mime4j-core' ]
    List axisExGroups  = [ 'javax.servlet', 'commons-fileupload', 'org.apache.woden',
                           'javax.ws.rs', 'org.apache.geronimo.specs', 'org.codehaus.woodstox' ]
    compileEx ('org.apache.axis2:axis2-adb:1.6.3', axisExModules, axisExGroups)
    compileEx ('org.apache.axis2:axis2-transport-local:1.6.3', axisExModules, axisExGroups)
    compileEx ('org.apache.axis2:axis2-transport-http:1.6.3', axisExModules, axisExGroups)

}

是我在 Gradle 论坛上的原始帖子。

于 2015-09-16T23:34:53.427 回答