1, to the official website to download, I use is Apache-cxf-2.5.10.zip
2. Decompression
3. Enter the bin directory of Apache CXF via the command line, as my directory is D:\BIS\axis2\apache-cxf-2.7.10\bin
(This directory is the directory where Wsdl2java.bat is located (if not, the full path where the. bat is written))
4. Enter the command:
Wsdl2java.bat-p com.oscar999-client-encoding utf-8-noaddressbinding wsdl file
Description
Wsdl2java usage:
Wsdl2java-p com-d Src-all aa.wsdl
-p Specifies the namespace of its WSDL, which is the package name to generate code for:
-d Specifies the directory where the code is to be generated
-client generate the code for the Client test Web service (-encoding utf-8 generate Chinese for utf-8 encoding)
-server The build server starts the code for the Web service
-impl Generating the implementation code for a Web service
-ant Generating Build.xml files
-all generates all start endpoint codes: Types,service Proxy,,service interface, server mainline, client mainline, implementation object, and an an T build.xml file.
5. If you are testing in eclipse, you can create a new Java project, copy all the jars under Cxf Lib into the project's Lib path, and put it into the build path.
The resulting Java files are then copied into SRC to invoke the test.
Problems you may encounter:
(a),
Caused by:
org.xml.sax.SAXParseException;
systemId: jar: file: / D: /apache-cxf-2.7.11/apache-cxf-2.7.11/lib/jaxb-xjc2.2.6.jar! / com / sun / tools / xjc / reader / xmlschema / bindinfo /binding.xsd;
lineNumber: 52; columnNumber: 88; schema_reference:
Due to the limitation set by the accessExternalSchema attribute, ‘file’ access is not allowed, so the scheme document ‘xjc.xsd’ cannot be read.
After looking at Baidu on the Internet, I saw the solution given by the Great God and immediately understood.
1. First analyze the cause of the error:
The version of jdk and jre I use is 1.8, and the version of cxf used is apache-cxf-2.7.11. The online god says that this is due to a bug in jdk1.8. Specific details https://bugs.openjdk.java.net / browse / JDK-8020999;
2. Solution:
Under the installation path of jdk, mine is C: \ Java \ jdk1.8.0_65 \ jre \ lib, add a property file jaxp.properties, and write the following content javax.xml.accessExternalSchema = all
(2) About JAXBElement <String> in the client code generated by cxf
When using cxf or x-fire for webservice development, when generating client code from a wsdl file, if the attribute type is String, JAXBElement <String> type may appear.
Why the webservice client does not use String directly, but uses JAXBElement <String> type, there is naturally a reason, because the server-side wsdl file has the attribute nillable = "true".
Solution: Use wsdl2java.bat -b "1.txt" -client -d E: / tmp -frontend jaxws21 wsdl file to generate normal pojo class
The content of "1.txt" is as follows:
<jaxb: bindings version = "2.1"
xmlns: jaxb = "http://java.sun.com/xml/ns/jaxb"
xmlns: xjc = "http://java.sun.com/xml/ns/jaxb/xjc"
xmlns: xs = "http://www.w3.org/2001/XMLSchema">
<jaxb: globalBindings generateElementProperty = "false" />
</ jaxb: bindings>
Use Apache CXF to generate code based on wsdl file