Axis2客户端的最小类路径是什么?

时间:2008-11-26 09:51:11

标签: java maven-2 classpath axis2

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

9 个答案:

答案 0 :(得分:28)

客户的最小罐子是:

  • 活化-1.1.jar
  • 公理-API-1.2.8.jar
  • 公理-IMPL-1.2.8.jar
  • 的axis2-ADB-1.5.1.jar
  • 的axis2-内核1.5.1.jar
  • 的axis2传输-HTTP-1.5.1.jar
  • 的axis2传输和本地1.5.1.jar
  • 公地编解码器-1.3.jar
  • 公地HttpClient的-3.1.jar
  • 共享记录-1.1.1.jar
  • 的HttpCore-4.0.jar
  • 邮件-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

答案 1 :(得分:13)

注意:此答复由Aaron Digulla本人提供。以下是他自己答案的确切内容。)

在maven2中,使ADB客户端工作的最小依赖关系(与从WSDL创建Java类的方式中的“ADB”)是:

    <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>
嗯......似乎我无法将其标记为正确的答案。有人可以复制一下这样我可以举报他的帖子吗?

答案 2 :(得分:13)

也必须添加传输

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

答案 3 :(得分:9)

摘要

中工作客户端的最小依赖性
  • 公理-API-1.2.14.jar
  • 公理-IMPL-1.2.14.jar
  • 的axis2-ADB-1.6.3.jar
  • 的axis2-内核1.6.3.jar
  • 的axis2传输-HTTP-1.6.3.jar
  • 的axis2传输和本地1.6.3.jar
  • 公地编解码器-1.3.jar
  • 公地HttpClient的-3.1.jar
  • 共享记录-1.1.1.jar
  • 的HttpCore-4.0.jar
  • 邮件-1.4.jar
  • neethi-3.0.2.jar
  • WSDL4J-1.6.2.jar
  • XMLSchema的1.4.7.jar

在详细信息的最小依赖项下面列出

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

客户端存根在 COMPILE 时间

所需的类
  • 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类的客户端存根

RUN 时成功调用客户端存根所需的类

  • axiom-impl-1.2.14.jar(没有这个org.apache.axiom.om.OMException:找不到功能'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:拒绝连接:连接 - &gt;仅在Web服务因某些其他原因未启动或无法访问时出现错误

请注意确切的版本,但是行为是通用的,需要根据版本的包装更改,因此,提到上面的FQCN -

轴版本 - 1.6.3

Tomcat版本 - Apache Tomcat/7.0.64

Servlet版本 - 3.0

java.runtime.version - 1.7.0_79-b15

答案 4 :(得分: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>

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

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

答案 7 :(得分: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。

answer

中的示例代码

答案 8 :(得分: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)

}

Here是Gradle论坛中的原始帖子。