Axis2客户端的最小类路径是什么?
我想用Maven2构建一个Axis2客户端(我只访问一个远程Web服务,我没有实现一个!),我不想在我的项目中添加21MB的JAR。 当我用ADB转换WSDL时,我需要在我的pom.xml中编译代码?
( 注意:此回复是由Aaron Digulla本人提供的。以下是他自己答案的确切文字。)
在maven2中,使ADB客户端工作的最小依赖性设置(与从WSDL创建Java类的方式中的“ADB”)是:
org.apache.axis2 axis2-kernel 1.4.1 org.apache.axis2 axis2-adb 1.4.1
嗯…似乎我不能把它标记为正确的答案。 有人可以复制这个,以便我可以标记他的post吗?
客户的最小jar子是:
- 激活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
不得不添加运输工具
org.apache.axis2 axis2-adb 1.5.4 org.apache.axis2 axis2-transport-local 1.5.4 org.apache.axis2 axis2-transport-http 1.5.4
摘要中对工作客户端的最小依赖性
- 公理-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
下面列出了最小的依赖关系和详细信息
客户端存根使用使用%AXIS2_HOME%\ bin \ WSDL2Java工具生成的ServiceClient类对应给定的WSDL(为了生成,您需要类路径上的所有轴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类的客户端存根所需
在运行时成功调用客户端存根所需的类
- 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:拒绝连接:连接 – >错误仅在Web服务未启动或由于某些其他原因而可访问时
请注意确切的版本,但是行为是通用的,需要根据版本的包装更改,因此,提到上面的FQCN-
轴版本 – 1.6.3
Tomcat版本 – Apache Tomcat / 7.0.64
Servlet版本 – 3.0
java.runtime.version – 1.7.0_79-b15
没有axis2-xmlbeans, Axis2版本1.6.2对我不起作用 (尽管这可能与我使用axis2-wsdl2code-maven-plugin插件和xmlbeans作为我的数据绑定框架这一事实有关)。 我有以下POM:
org.apache.axis2 axis2-kernel 1.6.2 org.apache.axis2 axis2-adb 1.6.2 org.apache.axis2 axis2-transport-http 1.6.2 org.apache.axis2 axis2-transport-local 1.6.2 org.apache.axis2 axis2-xmlbeans 1.6.2
如果您的客户端在Java 6上运行,请考虑使用JAX-WS来使用WS。 JAX-WS使用JAXB标准进行绑定,而客户端不需要一个额外的jar。
实际上,您只需要axis-abd依赖项,因为axis2-kernel是axis-abd的子依赖项。 因此,您可以总结:
org.apache.axis2 axis2-adb 1.5.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。
此答案中的示例代码
对于那些使用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论坛上的原始post。