参考链接: Java中的this说明

WSDL to Java

命名

wsdl2java - 获取WSDL文档并生成完全带注释的Java代码,并实现相关服务。

概要

用例 :

wsdl2java -fe|-frontend <front-end-name> -db|-databinding <data-binding-name>

-wv <wsdl-version> -p <[wsdl-namespace =]package-name>* -sn <service-name>

-b <binding-file-name>* -reserveClass <class-name>* -catalog <catalog-file-name>

-d <output-directory> -compile -classdir <compile-classes-directory> -impl -server

-client -clientjar <jar-file-name> -all -autoNameResolution -allowElementReferences|-aer<=true>

-defaultValues<=class-name-for-DefaultValueProvider> -ant

-nexclude <schema-namespace [= java-package-name]>* -exsh <(true, false)> -noTypes

-dns <(true, false> -dex <(true, false)> -validate -keep

-wsdlLocation <wsdlLocation> -xjc<xjc-arguments>* -asyncMethods<[=method1,method2,...]>*

-bareMethods<[=method1,method2,...]>* -mimeMethods<[=method1,method2,...]>* -noAddressBinding

-faultSerialVersionUID <fault-serialVersionUID> -exceptionSuper <exceptionSuper>

-mark-generated -suppress-generated-date -h|-?|-help -version|-v -verbose|-V -quiet|-q|-Q

-wsdlList <wsdlurl>

说明

wsdl2java 获取WSDL文档并生成完全带注释的Java代码,从中实现服务。 WSDL文档必须具有有效的portType元素,但它不需要包含绑定元素或服务元素。 使用可选参数,您可以自定义生成的代码。 此外,wsdl2java可以生成基于Ant的makefile来构建您的应用程序。

选项

用于验证WSDL文件的选项在下表中进行了总结。

选项  解释  -?,-h,-help  Displays the online help for this utility and exits.  -fe frontend-name  Specifies the frontend. Default is JAXWS. Currently supports only JAXWS frontend and a "jaxws21" frontend to generate JAX-WS 2.1 compliant code.  -db databinding-name  Specifies the databinding. Default is jaxb. Currently supports jaxb, xmlbeans, sdo (sdo-static and sdo-dynamic), and jibx.  -wv wsdl-version  Specifies the wsdl version .Default is WSDL1.1. Currently suppports only WSDL1.1 version.  -p [ wsdl-namespace= ] PackageName  Specifies zero, or more, package names to use for the generated code. Optionally specifies the WSDL namespace to package name mapping.  -sn service-name  The WSDL service name to use for the generated code.  -b binding-name  Specifies JAXWS or JAXB binding files or XMLBeans context files. Use multiple -b flags to specify multiple entries.  -catalog catalog-file-name  Specify catalog file to map the imported wsdl/schema  -d output-directory  Specifies the directory into which the generated code files are written.  -compile  Compiles generated Java files.  -classdir compile-class-dir  Specifies the directory into which the compiled class files are written.  -client  Generates starting point code for a client mainline.  -clientjar jar-file-name  Generates the jar file which contains all the client classes and wsdl;the specified wsdlLocation won't work when the -clientJar is defined.  -server  Generates starting point code for a server mainline.  -impl  Generates starting point code for an implementation object.  -all  Generates all starting point code: types, service proxy, service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.  -ant  Specify to generate an Ant build.xml script.  -autoNameResolution  Automatically resolve naming conflicts without requiring the use of binding customizations.  -defaultValues=[DefaultValueProvider impl]  Specifies that default values are generated for the impl and client. You can also provide a custom default value provider. The default provider is RandomValueProvider  -nexclude schema-namespace [=java-packagename]  Ignore the specified WSDL schema namespace when generating code. This option may be specified multiple times. Also, optionally specifies the Java package name used by types described in the excluded namespace(s).  -exsh (true/false)  Enables or disables processing of implicit SOAP headers (i.e. SOAP headers defined in the wsdl:binding but not wsdl:portType section.) Processing the SOAP headers requires the SOAP binding jars available on the classpath which was not the default in CXF 2.4.x and older. You may need to add a dependency to cxf-rt-binding-soap for this flag to work. Default is false.  -dns (true/false)  Enables or disables the loading of the default namespace package name mapping. Default is true and http://www.w3.org/2005/08/addressing=org.apache.cxf.ws.addressing namespace package mapping will be enabled.  -dex (true/false)  Enables or disables the loading of the default excludes namespace mapping. Default is true.  -validate  Enables validating the WSDL before generating the code.  -keep  Specifies that the code generator will not overwrite any preexisting files. You will be responsible for resolving any resulting compilation issues.  -wsdlLocation wsdlLocation  Specifies the value of the @WebServiceClient annotation's wsdlLocation property.  -xjc<xjc args>  Specifies a comma separated list of arguments that are passed directly to the XJC processor when using the JAXB databinding. A list of available XJC plugins can be obtained using -xjc-X.  -noAddressBinding  For compatibility with CXF 2.0, this flag directs the code generator to generate the older CXF proprietary WS-Addressing types instead of the JAX-WS 2.1 compliant WS-Addressing types.  -v  Displays the version number for the tool.  -verbose  Displays comments during the code generation process.  -quiet  Suppresses comments during the code generation process.  -exceptionSuper  superclass for fault beans generated from wsdl:fault elements (defaults to java.lang.Exception)  -reserveClass classname  Used with -autoNameResolution, defines a class names for wsdl-to-java not to use when generating classes. Use this option multiple times for multiple classes.  -allowElementReferences<=true>  (or -aer) If true, disregards the rule given in section 2.3.1.2(v) of the JAX-WS 2.2 specification disallowing element references when using wrapper-style mapping.  -asyncMethods=foo,bar,...  List of subsequently generated Java class methods to allow for client-side asynchronous calls, similar to enableAsyncMapping in a JAX-WS binding file.  -bareMethods=foo,bar,...  List of subsequently generated Java class methods to have wrapper style (see below), similar to enableWrapperStyle in JAX-WS binding file.  -mimeMethods=foo,bar,...  List of subsequently generated Java class methods to enable mime:content mapping, similar to enableMIMEContent in JAX-WS binding file.  -faultSerialVersionUID <fault-serialVersionUID>  How to generate suid of fault exceptions. Use NONE, TIMESTAMP, FQCN, or a specific number. Default is NONE.  -mark-generated  Adds the @Generated annotation to classes generated. -suppress-generated-dateSuppresses writing the current timestamp in the generated file (since CXF version 3.2.2) wsdlurl  The path and name of the WSDL file to use in generating the code.

您必须将WSDL文档的绝对路径或相对路径作为最后一个参数进行声明。

示例

wsdl2java HelloWorld.wsdl

wsdl2java -p com.mycompany.greeting Greeting.wsdl

wsdl2java -client HelloWorld.wsdl

(See below for usage with Apache Ant and Maven.)

Using wsdl2java with Ant

The wsdl2java command can be wrapped inside an Ant target as shown below:

<?xml version="1.0"?>

<project name="cxf wsdl2java" basedir=".">

<property name="cxf.home" location ="/usr/myapps/cxf-2.5.1"/>

<path id="cxf.classpath">

<fileset dir="${cxf.home}/lib">

<include name="*.jar"/>

</fileset>

</path>

<target name="cxfWSDLToJava">

<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">

<arg value="-client"/>

<arg value="-d"/>

<arg value="src"/>

<arg value="MyWSDL.wsdl"/>

<classpath>

<path refid="cxf.classpath"/>

</classpath>

</java>

</target>

</project>

Make sure you set the "fork=true" attribute for the <java/> task as shown above. Also, remember to keep each word or flag within the command line options in its own <arg/> element (e.g., do not use <arg value="-d src"/>, but split them up into two <arg/> elements as done here.)

Although we would recommend using Maven, see the antbuild sample in the CXF distribution for an example of using Ant to create a CXF project.

JAXWS Customization

The default JAX-WS frontend created by wsdl2java can be customized by using a customization binding file. For an example, see the async_binding.xmlfile in samples/jaxws_async – if specified when running wsdl2java, it will generate asynchronous methods in the SEI.

Q: What if I want to change the generated SEI name?

A: We don't have a command-line option to do this, but you can have a binding file like the following snippet to achieve this goal

<bindings     xmlns:xsd="http://www.w3.org/2001/XMLSchema"     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"     wsdlLocation="hello_world.wsdl"     xmlns="http://java.sun.com/xml/ns/jaxws">     <bindings node="wsdl:definitions/wsdl:portType[@name='GreeterSE']">     <class name="GreeterSEI"/>     </bindings> </bindings>

Q: How do I pass the binding file to wsdl2java?

A: If you are using wsdl2java via command line tool:

wsdl2java HelloWorld.wsdl -b my_binding.xml

For Ant, follow the example above on how to add "-b" and "my_binding.xml" as arg elements.

For Maven see cxf-codegen-plugin

Q: How to map xsd:dateTime to java.util.Date? Well, people don't like the XMLGregorianCalendar which is the default mapping from the xsd:dateTime (xsd:time and xsd:date as well), We can use the jaxws customization to change the default mapping, here are some sample binding files If you have schema inside the wsdl, here is the binding file you can use:

<jaxws:bindings wsdlLocation="YOUR_WSDL_LOCATION"           xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"           xmlns:xs="http://www.w3.org/2001/XMLSchema"           xmlns:jxb="http://java.sun.com/xml/ns/jaxb"           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">   <jaxws:bindings  node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='THE_NAMESPACE_OF_YOUR_SCHEMA']">       <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">         <jxb:javaType name="java.util.Date" xmlType="xs:dateTime"                       parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDateTime"                       printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDateTime"/>       </jxb:globalBindings>   </jaxws:bindings> </jaxws:bindings>

This requires an additional dependency:

<dependency>    <groupId>org.apache.cxf.xjc-utils</groupId>    <artifactId>cxf-xjc-runtime</artifactId> </dependency>

If you want to use java.util.Calendar, just change the org.apache.cxf.xjc.runtime.DataTypeAdapter to javax.xml.bind.DatatypeConverter, and change the name value to "java.util.Calendar"

If your schema is out of wsdl, here is an example you can try:

<jxb:bindings version="2.0"               xmlns:jxb="http://java.sun.com/xml/ns/jaxb"               xmlns:xs="http://www.w3.org/2001/XMLSchema">   <jxb:bindings schemaLocation="file:<path><name>.xsd" node="/xs:schema">     <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">       <jxb:javaType name="java.util.Date" xmlType="xs:dateTime"                     parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDateTime"                     printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDateTime"/>     </jxb:globalBindings>   </jxb:bindings> </jxb:bindings>

Q: How can I switch my generated web service method calls from wrapper style to non wrapper-style (or vice-versa)?

A: Create an external binding file and set the value of <enableWrapperStyle/> to true or false as desired:

<jaxws:bindings     xmlns:xsd="http://www.w3.org/2001/XMLSchema"     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"     wsdlLocation="your.wsdl"     xmlns="http://java.sun.com/xml/ns/jaxws"     xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">     <enableWrapperStyle>false</enableWrapperStyle> </jaxws:bindings>

Alternatively you can embed this instruction within the WSDL file directly, as the immediate child of the wsdl:portType:

<wsdl:portType name="MyWebServicePortType">     <jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">         <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>         ... other binding settings if needed ...     </jaxws:bindings>     <wsdl:operation name="sayHello">     ... </wsdl:portType>

Note: The meaning of "wrapper-style" and "non-wrapper style" as defined in the JAX-WS 2.1 specification can be counterintuitive. Wrapper-style indicates that each data element within the request message gets its own Java parameter, while non-wrapper style means that a single Java object containing all the data elements serves as the lone parameter to the web service method call. (See Figure 2.2 of the specification for an example.) Also, note the wrapper style is not always available, the WSDL criteria specified in Section 2.3.1.2 ("Wrapper Style") of the specification must be met or only non-wrapper style will be generated.

Q: What else can I change with the JAXWS customization binding file?

A: You can find the full list of customization items in Chapter 8 of the JAX-WS Specification.

Using maven to generate java code from WSDL

see cxf-codegen-plugin

See Also

idl2wsdl, java2js, java2ws, wsdl2corba, wsdl2js, wsdl2service, wsdl2soap, wsdl2xml, wsdlvalidator and xsd2wsdl.

[转载] WSDL2Java详细使用说明【官方最全说明】相关推荐

  1. Competition——AI:国内外人工智能比赛平台以及竞赛类型、竞赛题目、举行时间等之详细攻略(最全+ing)

    Competition--AI:国内外人工智能比赛平台以及竞赛类型.竞赛题目.举行时间等之详细攻略(最全+ing) tips (1).可以在各大比赛平台指定的讨论区,或者github网站上,找到历届选 ...

  2. unix命令的一般格式是_Linux tree 命令详细使用说明

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解Linux系统上的tree命令的详细使用方 ...

  3. Kibana可视化管理页面详细使用说明

    Kibana可视化管理页面详细使用说明 使用浏览器访问 ip:5601 默认端口,进入首页 Discover:日志管理视图  主要进行搜索和查询 Visualize:统计视图      构建可视化的图 ...

  4. HTTP头部解释,HTTP头部详细分析,最全HTTP头部信息

    原文地址:HTTP头部解释,HTTP头部详细分析,最全HTTP头部信息 HTTP 头部解释 ====================================================== ...

  5. 博途PLC滤波指令 Filter_PT1、Filter_PT2、Filter_DT1详细使用说明(含Simulink+博途PLC仿真)

    博途S7-1200/1500PLC的PID控制和详细使用说明,请参看下面的文章链接,这里不再赘述.

  6. flash计算机操作步骤,flash案例详细操作步骤(绝对全).doc

    flash案例详细操作步骤(绝对全) 安徽理工大学 计算机专业2008级认识实习大纲.计划 (2009.10) 课内学时:2周 学分数:3.0 三.动画制作Flash 1.实习性质.任务与目的 本实习 ...

  7. Ftrace debugfs接口详细使用说明

    文章目录 Ftrace debugfs接口详细使用说明 1. 概述 2. 实现原理及代码 3. Function 跟踪 3.1 Trace文件系统 3.2 Tracers 3.3 Error cond ...

  8. channelinactive触发后不关闭channel_golang chan 最详细原理剖析,全面源码分析!看完不可能不懂的!...

    大纲 channel 是什么? channel 使用姿势 chan 创建 chan 入队 chan 出队 结合 select 语句 结合 for-range 语句 源码解析 `makechan` hc ...

  9. 转载:ubuntu 安装code blocks全记录

    (一)安装步骤: 1.先把编译环境,C库.C++库和Boost库装好,如下: sudo apt-get install build-essential * 有可能安装 build-essential  ...

最新文章

  1. BootStrap 模态框禁用空白处点击关闭
  2. win10计算机无法睡眠怎么办,Windows10笔记本电脑无法睡眠怎么处理
  3. uniapp中vuex状态管理
  4. android 分支管理,Android Studio git使用,包括协同开发,分支管理。
  5. 数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和
  6. 动态链接库和静态库的区别
  7. Dubbo 入门介绍
  8. [笔记]提升R的性能和突破内存限制的技巧
  9. Ubuntu Sublime Text 3 搜狗拼音
  10. 10 有关业务/事件类型WQ在年2021的号码范围不存在
  11. 吴恩达深度学习1.3笔记_Neural Networks and Deep Learning_浅层神经网络
  12. 风控模型中的变量替换
  13. 实现Serclet(1)
  14. opengl画的弧线 为什么有一个半径_6个1画生日蛋糕,也太简单啦【图文+视频教程】...
  15. 使用 Pig 进行数据分析
  16. 开课吧课堂:Kubernetes集群环境常见问题解决
  17. tensorflow之exponential_decay
  18. freeswitch被外国IP攻击盗打的防护措施
  19. java set 添加_Java Set add()用法及代码示例
  20. day13课后总结App

热门文章

  1. C/C++课程设计 新生入学管理系统(二)
  2. flume avro java 发送数据_flume将数据发送到kafka、hdfs、hive、http、netcat等模式的使用总结...
  3. 系统分析师和系统架构设计师难度比较_系统架构设计师,马上开课了!
  4. node ajax validator,使用validator.js对字符串数据进行验证
  5. batchsize大小对训练速度的影响
  6. PC介绍之PCIE、总线、内存、电源
  7. 广度优先搜索练习之神奇的电梯
  8. C#组成考题字符串【C#】
  9. 洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压dp】
  10. 使用T-SQL语句操作数据表-删除数据