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

参考链接: 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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mdm.Dialogs.promptModal()使用

这是prompt的扩展&#xff0c;提供了更多的功能&#xff0c;比如可以添加其他按钮和图标import mdm.*;mdm.Application.init(this, onInit);function onInit():void {// 启动程序...}quit.addEventListener(MouseEvent.CLICK,quitProgram);function quitProgram(evt:MouseEvent…

[转载] JAVA 构造函数及其重载

参考链接&#xff1a; Java重载Overload public class Student{ public int stuId; public String stuName; public int stuAge; public int stuScore; public Student(){ } public Student(int sId,String sName){ stuId sId; sName stuName; } public Student(int sld,S…

学生机房虚拟化(十)系统操作设计实现

引入&#xff1a; 在前篇思路的指导下&#xff0c;进行了为期三个星期的调试最终建立了一个初步成熟的&#xff0c;具有亲和力的配置界面&#xff0c;现在此虚拟系统已经初步部署了一个机房&#xff0c;用来学生日常上课。在本篇中&#xff0c;本人并不试图去花篇幅讲解彼此之间…

[转载] java之重写toString

参考链接&#xff1a; Java程序的输出| 重写Override 1.toString()就是是重写&#xff0c;对于一般的对象来说都会有这个方法&#xff0c;其实这个方法的目的&#xff0c;主要就是将对象按字符串的方式输出出来&#xff1a;打个比方&#xff0c;比如一个People类&#xff0c;里…

Gson的使用,对于不需要html escape的情况的处理

引入&#xff1a; 虽然是小问题&#xff0c;但是我还是需要记录下&#xff0c;我们知道&#xff0c;Google提供了一个Gson框架让我们高效的吧普通对象&#xff08;一般VO为佳&#xff09; 和json字符串之间进行互转。因为转换多数是和浏览器打交道的&#xff0c;所以一般默认的…

[转载] Java 重写paint绘图

参考链接&#xff1a; 用Java重写Override 感谢原文&#xff1a;https://zhidao.baidu.com/question/260060153.html 这个方法需要注意的地方不多&#xff0c;也就是重写时&#xff0c;先调用 super.paint(g) 方法 paint方法不需要编写代码调用&#xff0c;只需要重写。 其他…

教你如何进入有密码的 XP 系统(下)

自动登录时禁用Shift键 当使用自动登录功能时&#xff0c;用户可通过按住Shift键忽略登录进程&#xff0c;输入其他用户名及密码进入电脑。该技巧可以禁用自动登录时的Shift键功能。操作步骤如下&#xff1a;打开“注册表编辑器”&#xff0c;找到[HKEY_LOCAL_MACHINE\Softwar…

[转载] 2020最新Java面试题,常见面试题及答案汇总

参考链接&#xff1a; Java程序的输出| 18(重写Override) 发现网上很多Java面试题都没有答案&#xff0c;所以花了很长时间搜集整理出来了这套Java面试题大全&#xff0c;希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个Java面试手册&#xff0c;是PDF版的。 关注…

【心随笔】叙述你成功完成一件事情的方法

一、situation 先描述你曾经处于的困难状况 二、task / target 说一说你是怎样做出打算的 三、action / attitude 告诉别人你做出的行动 四、result 最后获得了怎样的成绩转载于:https://www.cnblogs.com/tnxlvlxy/p/7806142.html

[转载] java排序compareTo:降序输出学生成绩

参考链接&#xff1a; Java程序的输出| 18(重写Override) 一道简单程序题&#xff1a; 编写一个程序&#xff0c;输入学生的姓名、分数信息&#xff0c;要求程序按照成绩降序排序后并输出。 实现方法有很多 方法一 public class ScoreSort2 { private String name; pr…

300GB*6 SCSI RAID5 LINUX服务器数据恢复手记

[摘要]某数码冲印网站&#xff0c;采用DELL POWEREDGE2850服务器&#xff0c;存储部分由6块300G硬盘组成RAID5&#xff0c;LINUX平台&#xff0c;1.5T逻辑磁盘中只包含一个卷&#xff0c;文件系统为EXT3&#xff0c;存储所有客户数码照片&#xff0c;服务器的故障导致整个公司无…

[转载] public static void main(String[] args) 隐含了什么?

参考链接&#xff1a; 了解Java中“ public static void main”中的“ static” public class TestSort { public static void main(String[] args) { // 需要分别用Javac和Java命令行编译和运行 int[] arr; int temp 0; arr new int [9]; for (int i 0; i < arr.length…

在C#中创建DataTable

经常遇到对DataTable进行各种运算&#xff0c;这方面的资料经常散落在各处&#xff0c;使用起来不方面&#xff0c;我想还是把他们集中到博客中&#xff0c;下次要用到的时候可以直接查看。下面是创建一个空白的DataTable&#xff0c;并定义相关的字段&#xff1a;DataTable dt…

[转载] Java中的静态方法不能被子类重写

参考链接&#xff1a; 可以在Java中重载或重写静态方法吗 Java中的静态方法不能被子类重写 特点&#xff1a;静态方法属于类的方法&#xff0c;也属于对象的方法&#xff0c;但是静态方法随类的存在。 结论&#xff1a;Java中的静态方法不能被子类重写&#xff0c;实际上&…

2015-03-19 create php alternative for myslq_result in mysqli(PHP)--PDO Tutorial for Mysql Developers

来源&#xff1a;http://www.bestwebframeworks.com/tutorials/php/152/create-php-alternative-for-mysql_result-in-mysqli/ 内容&#xff1a; If you are migrating from PHP 5.5 to a newer version of PHP - you might be interested in a MySQL to MySQLi/PDO migration …

[转载] [OpenGL] shadow mapping(实时阴影映射)

参考链接&#xff1a; Java中静态函数的阴影(方法隐藏) 转载原创&#xff1a;ZJU_fish1996 http://blog.csdn.net/zju_fish1996/article/details/51932954 source:原文地址 code:点击可以直接下载源代码 1978年&#xff0c;Lance Williams在其发表的论文《Casting cur…

[转载] java synchronized静态同步方法与非静态同步方法,同步语句块

参考链接&#xff1a; Java中的静态方法与实例方法 java synchronized静态同步方法与非静态同步方法&#xff0c;同步语句块 并发编程 线程同步 静态方法锁 非静态方法锁 同步块 进行多线程编程&#xff0c;同步控制是非常重要的&#xff0c;而同步控制就涉及到了锁。 对代…

SpringBoot安装和创建简单的Web应用

SpringBoot安装 方式一&#xff1a; Eclipese->Help->Eclipse Marketplace ->Finde STS -> Install 注意&#xff1a;安装过程中挺慢&#xff0c;而且可能会报错&#xff0c;报错时需要重复以上步骤&#xff08;重新安装STS后&#xff0c;安装进度接之前的继续进行…

[转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解

参考链接&#xff1a; 在Java中为静态最终static final变量分配值 转载来源&#xff1a;https://blog.csdn.net/peterwin1987/article/details/7571808 Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间。这些…

android学习之-Style样式的定义

这个例子主要是写了配置文件&#xff0c;main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:orientation"vertical" android:lay…