axis2 command line and code generation

1.ant脚本  WSDL2JAVA
<!--
		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);

你可能感兴趣的:(java,.net,ant,vb,VB.NET)