1、准备一个标准的maven工程,将pom.xml修改成如下:
<pre name="code" class="xml"> <?xml version="1.0" encoding="ISO-8859-1"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>TEST_WS</artifactId> <packaging>jar</packaging> <name>TEST WS</name> <version>1.0.0</version> <description> Web service </description> <properties> <!-- 这个目录用于存放生成后的JAVA,如果不存在就先创建好了 --> <genSource.dir>src/gen/java</genSource.dir> <!-- 指定bingding文件所在的目录,在这个示例中只指定了bindingDirectory,而没有指定bindingFile,那说明只要是这个目录下面的所有xml文件都会被使用 --> <!-- 使用帮助,参看:http://www.oracle.com/technetwork/articles/entarch/jax-ws-jaxb-customization-082750.html, http://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html#bindingDirectory --> <jaxwsBing.dir>src/jaxws/testService</jaxwsBing.dir> <!-- WSDL及xsd文件所在的路径,只需要指明wsdl文件即可,因为wsdl文件中会引用到xsd --> <wsdlFile>testService/TestService.wsdl</wsdlFile> </properties> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>1.12</version> <dependencies> <dependency> <artifactId>jsr181</artifactId> <groupId>javax.jws</groupId> <version>1.0</version> </dependency> </dependencies> <configuration> <destDir /> <!-- don't need .class files --> <extension>true</extension> <keep>true</keep> <sourceDestDir>${project.basedir}/${genSource.dir}</sourceDestDir> <target>2.1</target> <verbose>true</verbose> </configuration> <executions> <execution> <id>wsimport-IsatService</id> <phase>process-sources</phase> <goals> <goal>wsimport</goal> </goals> <configuration> <bindingDirectory>${project.basedir}/${jaxwsBing.dir}</bindingDirectory> <wsdlFiles> <wsdlFile>${wsdlFile}</wsdlFile> </wsdlFiles> </configuration> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <artifactId>jaxws-api</artifactId> <groupId>javax.xml.ws</groupId> <scope>provided</scope> <version>2.1-1</version> </dependency> </dependencies> </project>
2、在目录src/jaxws/testService下面准备好以下三个binging文件:
Global_jaxb.xml:
<?xml version="1.0" encoding="UTF-8"?> <jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" version="2.0" jaxb:extensionBindingPrefixes="xjc"> <jaxb:globalBindings underscoreBinding="asCharInWord"> <jaxb:serializable uid="1" /> <xjc:simple /> </jaxb:globalBindings> </jaxb:bindings>
TestService_jaxb.xml:
<?xml version="1.0" encoding="UTF-8"?> <jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" schemaLocation="../../wsdl/testService/TestElement.xsd" node="/xsd:schema" version="2.0"> <jaxb:schemaBindings> <jaxb:package name="com.test.obj" /> </jaxb:schemaBindings> </jaxb:bindings>
TestService_jaxws.xml:
<?xml version="1.0" encoding="UTF-8"?> <jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" wsdlLocation="../../wsdl/testService/TestService.wsdl" version="2.0" jaxb:extensionBindingPrefixes="xjc"> <jaxws:bindings node="wsdl:definitions"> <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle> <jaxws:package name="com.test.ws" /> </jaxws:bindings> </jaxws:bindings>
3。在目录src/wsdl/testService下面准备TestService.wsdl及TestElement.xsd文件,内容分别如下,
TestService.wsdl:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="TestService" targetNamespace="http://test.com/TestService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.com/TestService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://test.com/TestService" schemaLocation="./TestElement.xsd"> </xsd:import> </xsd:schema> </wsdl:types> <wsdl:message name="testRequest"> <wsdl:part name="parameters" element="tns:testRequest"></wsdl:part> </wsdl:message> <wsdl:message name="testResponse"> <wsdl:part name="parameters" element="tns:testResponse"></wsdl:part> </wsdl:message> <wsdl:portType name="TestService"> <wsdl:operation name="test"> <wsdl:input message="tns:testRequest"></wsdl:input> <wsdl:output message="tns:testResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="TestBinding" type="tns:TestService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="test"> <soap:operation soapAction="" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="TestService_Service"> <wsdl:port name="TestPort" binding="tns:TestBinding"> <soap:address location="http://localhost:8080/TestService/TestService_Service" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
TestElement.xsd:
<?xml version="1.0" encoding="UTF-8"?> <schema targetNamespace="http://test.com/TestService" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://test.com/TestService"> <element name="testRequest"> <complexType> <sequence> <element name="USER_NAME" type="string"></element> </sequence> </complexType> </element> <element name="testResponse"> <complexType> <sequence> <element name="AGE" type="string" /> </sequence> </complexType> </element> </schema>
4.执行命令mvn clean install,如果出现如下提现,则说明配置成功:
parsing WSDL... generating code... com\test\ws\TestService.java com\test\ws\TestServiceService.java com\test\obj\ObjectFactory.java com\test\obj\TestRequest.java com\test\obj\TestResponse.java com\test\obj\package-info.java