axis2 command line and code generation

[/code]1.ant脚本  WSDL2JAVA[code="java"]
<!--
WSDL2JAVA 参数说明
-o <path> : 指定生成代码的输出路径
-a : 生成异步模式的代码
-s : 生成同步模式的代码
-p <pkg> : 指定代码的package名称
-l <languange> : 使用的语言(Java/C) 默认是java
-t : 为代码生成测试用例
-ss : 生成服务端代码 默认不生成
-sd : 生成服务描述文件 services.xml,仅与-ss一同使用
-d <databinding> : 指定databingding,例如,adb,xmlbean,jibx,jaxme and jaxbri
-g : 生成服务端和客户端的代码
-pn <port_name> : 当WSDL中有多个port时,指定其中一个port
-sn <serv_name> : 选择WSDL中的一个service
-u : 展开data-binding的类
-r <path> : 为代码生成指定一个repository
-ssi : 为服务端实现代码生成接口类
-S : 为生成的源码指定存储路径
-R : 为生成的resources指定存储路径
- -noBuildXML : 输出中不生成build.xml文件
- -noWSDL : 在resources目录中不生成WSDL文件
- -noMessageReceiver : 不生成MessageReceiver类
-->

<target name="generate.service">
<delete dir="${service.target}" />
<mkdir dir="${service.target}" />
<mkdir dir="${service.target}/classes" />
<java classname="org.apache.axis2.wsdl.WSDL2Java" classpathref="Maven Dependencies.libraryclasspath" fork="true">
<arg line="-uri ${wsdl.uri}" />
<arg line="-s" />
<arg line="-ss" />
<arg line="-sd" />
<arg line="-ssi" />
<arg line="-ap" />
<arg line="-ns2p http://cn.ecplive/xsd=cn.ecplive.service.adb.xsd" />
<arg line="-l java" />
<arg line="-p cn.ecplive.service.adb" />
<arg line="-d adb" />
<arg line="-o ${build.dir}/service" />
</java>
</target>

<target name="generate.client">
<delete dir="${client.target}" />
<mkdir dir="${client.target}" />
<mkdir dir="${client.target}/classes" />
<java classname="org.apache.axis2.wsdl.WSDL2Java" classpathref="Maven Dependencies.libraryclasspath" fork="true">
<arg line="-uri ${wsdl.uri}" />
<arg line="-t" />
<arg line="-u" />
<arg line="-s" />
<arg line="-ns2p http://cn.ecplive/xsd=cn.ecplive.service.adb.xsd" />
<arg line="-l java" />
<arg line="-p cn.ecplive.zteclient" />
<arg line="-o ${build.dir}/client" />
</java>
</target>





2.AXIS2自动生成的客户端设置:
(转载 http://lichangwei.iteye.com/blog/230871)
Chunk选项阻碍axis2集成.NET服务
昨天用.NET创建了一项WEB服务,实现一个应用集成接口。使用C#和VB.NET客户端均可以正常实现调用。为了实现JAVA客户端的集成,下载了axis2。在生成客户端stub以后,使用一个简单的测试代码,可无论如何均不能实现服务调用,郁闷。
回想起以前使用axis的时候是可以正常调用的,同事们也都用过,重新下载axis,在生成wsil并根据wsil生成客户端代理以后,JAVA客户端可以正常调用那项服务了。
使用协议分析工具,发现在axis中使用的是HTTP/1.0协议,而.NET和axis2使用的是HTTP/1.1协议,后两者的区别在于.NET未使用ns1的命名空间前缀打包SOAP请求,且axis2使用了Content-Encoding: chunked头。
通过修改wsdl2java生成的stub程序,取消ns1的命名空间前缀,故障依然存在。查了HTTP/1.1相关说明,并查找axis2相关javadoc,修改了stub类带(ConfigurationContext configurationContext, String targetEndpoint, boolean useSeparateListener)参数的构造方法,在最后加入一句禁止使用chunk选项,终于调用成功:_serviceClient.getOptions().setProperty(HTTPConstants.CHUNKED, Boolean.FALSE);



_serviceClient.getOptions().setProperty(HTTPConstants.CHUNKED,
Constants.VALUE_FALSE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值