class="java" name="code"> wsdl2java:参数解释
wsdl2java 用于根据WSDL生成相应的服务端和客户端代码的生成工具。
命令行格式为:WSDL2Java [options] -uri <url or path> : A url or path to a WSDL
其中常用的options具体如下:
-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类
-scn : 用已有的代码代替skeletons
wsdl文件使用ant生成webservice代码
使用ant工具 将wsdl文件生成webservice代码:
文件目录结构
├─apache-ant-1.9.0
├─axis2-1.5.1
├─axis2-1.6.2
├─jre6
└─wsdl2java
在wsdl2java文件夹下创建如下文件
wsdl2java.cmd
wsdl2java.xml
[wsdl2java][hide].reg
[wsdl2java][show].reg
文件内容:【[wsdl2java][hide].reg】
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT.wsdl]
[-HKEY_CLASSES_ROOTwsdlfile]
【[wsdl2java][show].reg】
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT.wsdl]
@="wsdlfile"
[HKEY_CLASSES_ROOTwsdlfileshellwsdl2java4all]
@="wsdl2java4all"
[HKEY_CLASSES_ROOTwsdlfileshellwsdl2java4allcommand]
@="cmd.exe /s /c D:/test/wsdl2java/wsdl2java.cmd %1 D:/test/wsdl2java codegen.all"
[HKEY_CLASSES_ROOTwsdlfileshellwsdl2java4client]
@="wsdl2java4client"
[HKEY_CLASSES_ROOTwsdlfileshellwsdl2java4clientcommand]
@="cmd.exe /s /c D:/test/wsdl2java/wsdl2java.cmd %1 D:/test/wsdl2java codegen.client"
【wsdl2java.xml】
<?xml version="1.0" encoding="UTF-8"?>
<project name="CodegenExample" default="codegen.all" basedir=".">
<property environment="env" />
<property name="axis2.home" value="${env.AXIS2_HOME}" />
<path id="codegen.class.path">
<pathelement path="${java.class.path}"/>
<fileset dir="${axis2.home}">
<include name="lib/**.jar"/>
</fileset>
</path>
<taskdef name="codegen"
classname="org.apache.axis2.tool.ant.AntCodegenTask"
classpathref="codegen.class.path" />
<target name="codegen.all">
<codegen wsdlfilename="${codegen.wsdl}"
output="${codegen.dest}"
serverside="true"
serversideinterface="true"
generateservicexml="true" generateAllClasses="true">
</codegen>
<ant antfile="build.xml" dir="${codegen.dest}" />
<copy todir="${codegen.dest}/..">
<fileset dir="${codegen.dest}/build/lib" includes="**/*.jar"/>
</copy>
<!--delete dir="${codegen.dest}" /-->
</target>
<target name="codegen.client">
<codegen wsdlfilename="${codegen.wsdl}"
output="${codegen.dest}" unwrap="true">
</codegen>
<replace dir="${codegen.dest}" defaultexcludes="yes" encoding="UTF-8">
<include name="**/*.java"/>
<replacefilter token="_service.addOperation(__operation)" value="_service.addOperation(__operation);__operation.setSoapAction("")"/>
<replacefilter token="_operationClient.getOptions().setAction(" value="//_operationClient.getOptions().setAction(" />
</replace>
<ant antfile="build.xml" dir="${codegen.dest}" />
<copy todir="${codegen.dest}/..">
<fileset dir="${codegen.dest}/build/lib" includes="**/*.jar"/>
</copy>
<delete dir="${codegen.dest}" />
</target>
</project>
【wsdl2java.cmd】
set ANT_HOME=%2..apache-ant-1.9.0
set AXIS2_HOME=%2..axis2-1.5.1
set PATH=%ANT_HOME%bin;%AXIS2_HOME%bin;%PATH%
set PARAM=%1
ant %3 -f %2wsdl2java.xml -Dcodegen.wsdl=%PARAM% -Dcodegen.dest=%PARAM:~0,-5%