cxf wsdl2Java 实现
一、ant 实现
<?xml version="1.0"?> <project name="cxf build" basedir="."> <property name="cxf.home" location ="D:/developSoft/apache-cxf-2.3.3"/> <property name="src.dir" value="${basedir}/src" /> <property name="build-gen" location="${basedir}/gen"/> <property name="wsdl-name" value="hello.wsdl"/> <property name="wsdl-path" value="${src.dir}/${wsdl-name}"/> <path id="cxf.classpath"> <!-- 一定要编译class --> <pathelement location="${basedir}/WebRoot/WEB-INF/classes"/> <fileset dir="${cxf.home}/lib"> <include name="*.jar"/> </fileset> </path> <target name="cxfWSDLToJava"> <echo message="Running WSDL2Java task"/> <delete quiet="true" dir="${build-gen}"/> <mkdir dir="${build-gen}"/> <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client"/> <arg value="-d"/> <arg value="${build-gen}/src"/> <arg value="${wsdl-path}"/> <classpath> <path refid="cxf.classpath"/> </classpath> </java> </target> </project>
二、另一种ant 实现
<?xml version="1.0"?> <project name="cxf" basedir="." default="usage"> <property name="webroot.dir" value="${basedir}/WebRoot/WEB-INF/classes" /> <!-- webservice接口 --> <property name="target.class" value="com.hq.cxf.HelloWorld" /> <property name="wsdl.name" value="hello.wsdl" /> <property name="src.dir" value="src" /> <property name="client.dir" value="client" /> <property name="server.dir" value="server" /> <property name="compile.dir" value="${webroot.dir}" /> <target name="wsdl2javaClient"> <echo message="生成java client文件" /> <mkdir dir="${client.dir}" /> <exec dir="." executable="cmd.exe"> <arg line="/c wsdl2java" /> <!-- 生成的java所存目录 --> <arg line="-d ${client.dir}" /> <!-- wsdl文件所在路径 --> <arg line="-client src\*.wsdl" /> </exec> </target> </project>
三、dos 实现
@echo
d:
@rem cxf 安装路径\bin 目录下
set wsdl2path=D:/developSoft/apache-cxf-2.3.3/bin
cd %wsdl2path%
:::set savepath=
set wsdlurl=http://localhost:8080/cxf.server/IHelloWorld?wsdl
:::-p 指定其wsdl的命名空间,也就是要生成代码的包名:
:::-d 指定要产生代码所在目录
:::-client 生成客户端测试web service的代码
:::-server 生成服务器启动web service的代码
:::-impl 生成web service的实现代码
:::-ant 生成build.xml文件
:::-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline,
:::implementation object, and an Ant build.xml file.
call wsdl2java.bat %wsdlurl%
@echo 生成完毕
exit
第2种与第3种 实现方式需要配置CXF的环境变量
参数说明:
Option | Interpretation |
---|---|
-? ,-h ,-help | 显示此实用程序和退出的联机帮助。 |
-fe frontend-name | 指定的前端。 默认为JAXWS。 目前支持仅JAXWS前端和“jaxws21”前端生成JAX - WS 2.1兼容的代码。 |
-db databinding-name | 指定的绑定。 默认是JAXB。 目前支持JAXB,XMLBeans的,SDO(SDO的静态和动态SDO),和JiBX。 |
-wv wsdl-version | 指定WSDL版本,默认是WSDL1.1。 目前suppports只有WSDL1.1版本。 |
-p [ wsdl-namespace= ] PackageName | 指定零或更多,包名使用生成的代码。 还可以指定WSDL命名空间包名映射。 |
-sn service-name | WSDL服务名称使用生成的代码。 |
-b binding-name | 指定JAXWS或JAXB绑定文件或XMLBeans的上下文文件。 使用多个- B标志来指定多个条目。 |
-catalog catalog-file-name | 指定目录的文件映射导入的WSDL /架构 |
-d output-directory | 指定生成的代码文件被写入到其中的目录。 |
-compile | 编译生成的Java文件。 |
-classdir compile-class-dir | 指定编译的类文件被写入到其中的目录。 |
-client | 生成客户端主线出发点代码。 |
-server | 生成服务器主线出发点代码。 |
-impl | 生成出发点代码为实施对象。 |
-all | 生成所有的出发点代码:类型,服务代理,服务接口,服务器主线,客户端的主线,实施对象,和Ant build.xml文件。 |
-ant | 指定生成的 Ant build.xml脚本。 |
-autoNameResolution | 自动解决,而无需使用绑定自定义的命名冲突。 |
-defaultValues=[DefaultValueProvider impl] | 指定IMPL和客户端生成的默认值。 您也可以提供一个自定义的默认值供应商。 默认提供程序是RandomValueProvider |
-nexclude schema-namespace [=java-packagename] | 生成代码时,忽略指定的WSDL架构命名空间。 这个选项可以多次指定。 此外,还可以指定排除的命名空间(S)中所述的类型所使用的Java包名。 |
-exsh (true/false) | 启用或禁用隐SOAP标头处理(即在WSDL中定义的SOAP标头:约束力,但不WSDL:portType的部分),默认值是false。 |
-dns (true/false) | 启用或禁用加载默认命名空间的包的名称映射。 默认是真实的, http://www.w3.org/2005/08/addressing=org.apache.cxf.ws.addressing 命名空间封装映射将启用。 |
-dex (true/false) | 启用或禁用加载默认不包括命名空间映射。 默认值是true。 |
-validate | 启用验证WSDL生成的代码之前。 |
-keep | 指定的代码发生器不会覆盖任何预先存在的文件。 您将负责解决由此产生的任何编译问题的。 |
-wsdlLocation wsdlLocation | 指定@ WebServiceClient注释的wsdlLocation财产的价值。 |
-xjc<xjc args> | 指定一个逗号分隔的列表参数 ,直接传递到XJC处理器时使用的JAXB绑定。 使用XJC - X 可提供XJC的插件列表。 |
-noAddressBinding | 与CXF 2.0的兼容性,这个标志指示的代码生成器来生成旧CXF的专有的WS -寻址类型,而不是对JAX - WS 2.1兼容WS - Addressing的类型。 |
-v | 显示该工具的版本号。 |
-verbose | 显示在代码生成过程中的意见。 |
-quiet | 禁止在代码生成过程中的意见。 |
-useFQCNForFaultSerialVersionUID | 启用故障异常的基础上的hashCode()生成序列版本UID 异常的完全限定类名 |
wsdlurl | 在生成的代码使用的WSDL文件的路径和名称。 |
作为最后一个参数,您必须指定WSDL文档的绝对或相对路径。
官方文档: http://cxf.apache.org/docs/wsdl-to-java.html