axis2:用ant脚本生成webservice client 端的java/c代码
来源:互联网 发布:歼31黑烟知乎 编辑:程序博客网 时间:2024/06/08 10:15
Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化更强、灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security、WS-ReliableMessaging 等)的实现中。@百度百科
axis2是什么不是本文的重点,本文要说的是当我们用axis2已经搭架了一个webservice服务器可以对外部世界提供服务的时候,客户端访问webservice的代码怎么生成?
axis2提供了根据wsdl文件生成java和c代码的工具(Code Generator Tool),利用自动生成的client代码的好处不言而喻,可以大大减少client开发的工作量。
使用Code Generator Tool可以生成java或c代码。同时为了方便在ant下调用,axis2还提供了名为AntCodegenTask的ant task,用它可以很方便的在ant脚本中生成你的webservice client代码。
以下是ant脚本中用AntCodegenTask生成java代码的示例:
<property environment="env" /> <!--从环境变量AXIS2_HOME中读取axis2的位置--> <property name="AXIS2_HOME" value="${env.AXIS2_HOME}" /> <path id="axis2.classpath"> <!--默认的AXIS2 jar包--> <fileset dir="${AXIS2_HOME}/lib"> <include name="*.jar" /> </fileset> </path> <!--用AntCodegenTask类定义名为codegen的task,用于client代码生成--> <taskdef name="codegen" classname="org.apache.axis2.tool.ant.AntCodegenTask" classpathref="axis2.classpath" /> <!--生成客户端java代码--> <target name="client.java" depends="wsdl" description="生成webservice 客户端代码(java)"> <echo>从${package-name}.wsdl生成webservice client 代码(java)</echo> <delete includeEmptyDirs="true" dir="${client.java.dir}" /> <!--执行codegen生成代码--> <codegen wsdlfilename="${wsdl.dir}/${package-name}.wsdl" databindingName="adb" output="${client.java.dir}" language="java" packageName="${client-package}" /> </target>
其实如果你看过axis2的源码,AntCodegenTask最终是调用org.apache.axis2.wsdl.codegen.CodeGenerationEngine
(代码生成引擎)来实现代码生成,为了支持直接从命令行生成client代码,axis2还提供了一个org.apache.axis2.wsdl.WSDL2Code
实现与AntCodegenTask同样的功能,不同的只是它不依赖ant,有main方法可以独立执行。为了简化调用基于WSDL2Code,又提供了WSDL2C和WSDL2Java两个类,因为代码非常简单,这里贴出代码
WSDL2Java.java
package org.apache.axis2.wsdl;public class WSDL2Java { public static void main(String[] args) throws Exception { WSDL2Code.main(args); }}
WSDL2C.java
package org.apache.axis2.wsdl;public class WSDL2C { public static void main(String[] args) throws Exception { String[] cargs = new String[args.length + 2]; System.arraycopy(args, 0, cargs, 0, args.length); System.setProperty("org.apache.adb.properties", "/org/apache/axis2/schema/c-schema-compile.properties"); cargs[args.length] = "-l"; cargs[args.length + 1] = "c"; WSDL2Code.main(cargs); }}
so,如果不使用现成的AntCodegenTask,也可以直接执行WSDL2Code或WSDL2C或WSDL2Java生成你需要的代码,你可以利用WSDL2Code在shell脚本中完成client代码生成。
以下是用WSDL2C生成webservice client c代码的ant脚本示例:
<path id="service.classpath"> <path refid="axis2.classpath" /> <path refid="lib.classpath" /> <path refid="project.classpath" /> </path> <!--生成客户端c代码--> <target name="client.c" depends="wsdl" description="生成webservice 客户端代码(c)"> <echo>${package-name}.wsdl生成webservice client 代码(c)</echo> <delete includeEmptyDirs="true" dir="${client.c.dir}" /> <java classname="org.apache.axis2.wsdl.WSDL2C" fork="true"> <classpath refid="service.classpath" /> <arg value="-uri" /> <arg value="${wsdl.dir}/${package-name}.wsdl" /> <arg value="-o" /> <arg value="${client.c.dir}" /> <arg value="-d" /> <arg value="adb" /> <arg value="-u"/> </java> </target>
不论是用现成的AntCodegenTask,还是用WSDL2Code或WSDL2C或WSDL2Java,关于参数的说明都请参见CodegenToolReference
- axis2:用ant脚本生成webservice client 端的java/c代码
- Axis2 生成 webService 的client端过程
- 【webservice】生成axis2的webservice客户端代码
- java用axis2生成webservice客户端代码及使用方法
- Axis2发布webservice(3)--axis2生成wsdl文件,并利用wsdl文件来生成WebService的Java代码
- webservice 根据WSDL文件 生成java client端代码
- CXF生成webservice Client代码
- Axis2 WebService Client
- Axis2调用webservice Client
- Axis2调用webservice Client
- JAVA 调用Axis2 code generator 生成的webservice
- axis2生成webservice客户端代码及使用方法
- webservice生成Java客户端工具axis2.md
- Axis2调用webservice Client--RPCServiceClient
- 根据xsd使用xmlbean生成代码的ant脚本
- 用cxf生成webservice的java客户端代码
- 用cxf生成webservice的java客户端代码
- cxf生成webservice的java客户端代码
- 树结构练习——判断给定森林中有多少棵树
- Nginx(2) 启动,停止,信号控制
- JUC源码分析24-队列-CopyOnWriteArrayList,CopyOnWriteArraySet
- 数人云CTO解读Docker 1.12和金融业容器化
- ORACLE日期时间函数大全
- axis2:用ant脚本生成webservice client 端的java/c代码
- 一般网站注册密码生成器
- IOS去除文件后缀名
- activiti当前流程高亮显示
- HDOJ-----1285拓扑排序
- JavaWeb 项目调试心得
- webstorm调试node(express 框架)
- day08Python中的类成员
- mongoDB查询