cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Glen Mazza <glen.ma...@verizon.net>
Subject Re: [CONF] Apache CXF 2.0 Documentation: WSDL to Java (page edited)
Date Sat, 25 Aug 2007 11:01:27 GMT
I added in the <java/> task version (not official Ant task) to the
WSDL2Java page.  (I'll do the Java2WSDL one next).

I was probably in error when I recommended earlier having a separate Ant
task.  Sorry about that, but it's just that I'm not seeing the <java/>
alone version to be that difficult to use, and it cleanly maps (by
definition) 100% to the command-line options.

Still, I guess I would recommend we keep the official Ant tasks (Axis
and Glassfish both have them, although Axis frequently uses the <java/>
version in its documentation and samples), but dormant/undocumented
unless there is a greater demand for them in the future.  However, with
many Ant folks moving to Maven and (now) a clearly documented way of
using Ant with the <java/> task below, that day may not come.

Glen


Am Samstag, den 25.08.2007, 03:35 -0700 schrieb confluence@apache.org:
> Page Edited : CXF20DOC : WSDL to Java 
> WSDL to Java has been edited by Glen Mazza (Aug 25, 2007). 
> 
> Change summary: 
> 
> Added command-line version of Ant task to documentation.
> 
> 
> (View changes) 
> 
> Content:
> Synopsis
> wsdl2java [[-?]|[-help]|[-h]] [-fe <frontend name>] [-db <data binding name>]
[-wv <wsdl version>]
> [-p [[wsdl-namespace=] PackageName ] ...]
> [-b <binding-name>] [-catalog <catalog-file-name>] [-d <output-directory>]
[-compile]
> [-classdir <compile-class-dir>] [-client] [-server] [-impl] [-all] [-ant] [-nexclude
[schema-namespace[=java-packagename]] ...]
> [-exsh (true/false)] [-dns(true/false)] [-dex (true/false)] [-validate] [-v] [[-verbose]|[-quiet]]
{wsdlfile}
> Description
> wsdl2java takes a WSDL document and generates fully annotated Java
> code from which to implement a service. The WSDL document must have a
> valid portType element, but it does not need to contain a binding
> element or a service element. Using the optional arguments you can
> customize the generated code. In addition, wsdl2java can generate an
> Ant based makefile to build your application.
> 
> 
> Example
> wsdl2java HelloWorld.wsdl
> 
> wsdl2java -p com.iona.greeting Greeting.wsdl
> 
> wsdl2java -client HelloWorld.wsdl
> 
> (See below for usage with Apache Ant and Maven.)
> 
> 
> Arguments
> The arguments used to manage the code generation process are reviewed
> in the following table.
> 
>               Option 
>           Interpretation 
> -? 
> Displays the online help for this
> utility. 
> -help 
> Displays the online help for this
> utility. 
> -h 
> Displays the online help for this
> utility. 
> -fe frontend-name 
> Specifies the frontend. Default is
> JAXWS. Currently supports only
> JAXWS frontend. 
> -db databinding-name 
> Specifies the databinding. Default
> is JAXB. Currently supports only
> JAXB databinding. 
> -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. 
> -b binding-name 
> Specifies zero, or more, JAXWS or
> JAXB binding files. Use spaces to
> separate 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 complile-class-dir 
> Specifies the directory into which
> the compiled class files are
> written. 
> -client 
> Generates starting point code for a
> client mainline. 
> -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 
> Generates the Ant build.xml file. 
> -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
> extended soap header message
> binding.Default to 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. 
> -v 
> Displays the version number for the
> tool. 
> -verbose 
> Displays comments during the code
> generation process. 
> -quiet 
> Suppresses comments during the code
> generation process. 
> wsdlfile 
> The path and name of the WSDL file
> to use in generating the code. 
> 
> You must specify the absolute or relative path to the WSDL document as
> the last argument.
> 
> 
> 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.0.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.)
> 
> 
> JAXWS Customization
> By default, the frontend we used in CXF wsdl2java tool is JAXWS
> frontend, in JAXWS case, it allow us to customize the WSDL to Java
> mapping through the customization binding file, in
> samples/hello_world_async, you can see there is a
> wsdl/async_binding.xml binding file , which will be loaded by the tool
> and generate the extra async methods in the SEI.
> 
> Q: What if I want to change the generated SEI name?
> 
> A: We don't have an 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">
> 	<class name="GreeterSEI"/>
>     </bindings>
> </bindings>
> Q: I had the binding file, how to pass this file to the wsdl2java
> 
> A: If you are using the command line tool, you can do this
> 
> wsdl2java HelloWorld.wsdl -b my_binding.xml
> 
> If you are using the CXF ant wsdl2java macro, you can do this
> 
> <wsdl2java file="hello_world.wsdl" bindingfile="${basedir}/wsdl/my_binding.xml"/>
> If you are using the CXF Maven2 codegen-plugin, you should do this
> 
> <plugin>
>     <groupId>org.apache.cxf</groupId>
>     <artifactId>cxf-codegen-plugin</artifactId>
>     <version>2.0-incubator-RC-SNAPSHOT</version>
>     <executions>
> 	<execution>
> 	    <id>generate-sources</id>
> 	    <phase>generate-sources</phase>
> 
> 	    <configuration>
> 		<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
> 		<wsdlOptions>
> 		    <wsdlOption>
> 			<wsdl>${YOUR_WSDL_PATH}/myService.wsdl</wsdl>
> 			<extraargs>
> 			    <extraarg>-b</extraarg>
> 			    <extraarg>${YOUR_BINDING_FILE_PATH}/my_binding.xml</extraarg>    
                         
> 			</extraargs>
> 		    </wsdlOption>
> 		</wsdlOptions>
> 	    </configuration>
> 	    <goals>
> 		<goal>wsdl2java</goal>
> 	    </goals>
> 	</execution>
>     </executions>
> </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.tools.common.DataTypeAdapter.parseDateTime"
>                       printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/>
>       </jxb:globalBindings>
>   </jaxws:bindings>
> </jaxws:bindings>
> If you want to use java.util.Calendar, just change the
> org.apache.cxf.tools.common.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="1.0"
>               xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
>               xmlns:xs="http://www.w3.org/2001/XMLSchema">
>   <jxb:bindings schemaLocation="YOUR_SCHEMA_LOCATION" 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.tools.common.DataTypeAdapter.parseDateTime"

>                     printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/>
>     </jxb:globalBindings>
>   </jxb:bindings>
> </jxb:bindings>
> Q: My WSDL is in wrapped style, but how can I generate the bare style
> code?
> 
> A: You can customize the WSDL with the following binding file:
> 
> <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>
> 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.
> 
> 
> Maven Plugins
> In CXF we have a mavens plugin, called "cxf-codegen-plugin", which
> includes the goal "wsdl2java", you can find more information in Maven
> Integration and Plugin
> 
> 
> 
> 
> Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07,
> 2006) - Bug/feature request
> 
> Unsubscribe or edit your notifications preferences
> 


Mime
View raw message