自己生成发布服务端和客户端:
RESTFUL风格
http://www.cnblogs.com/hoojo/archive/2012/07/23/2605219.html
需要引入的JAR包:CXF的,配置好 CXFServlet 。另外引入jsr311-api-1.1.1.jar。
自己生成客户端:
1、命令生成:
CXF命令生成客户端:
先将CXF2.5源代码下载到D:\webservice\apache-cxf-2.2.5\apache-cxf-2.2.5\bin。使用以下命令:
D:\webservice\apache-cxf-2.2.5\apache-cxf-2.2.5\bin>wsdl2java -d d:/webservice/GenJavaCode/Rebook/CXF2 -client http://172.31.68.103:8082/CEAServiceFront/webservice/RebookFlightService?wsdl
使用SOAPUI生成客户端:
1、生成客户端时报错:interface with the same name "com.ceair.muss.rebook.Exception" is already in use. Use a class customization to resolve this conflict.
解决:不要指定Package再次生成OK
2、生成的客户端代码中Date类型变为XMLGregorianCalendar
解决:需要在CXF的BIN目录添加一个转换的XML
a.xml
<jaxws:bindings 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='http://service.front.ceair.com.cn/']"> <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>
然后在SOAP的Bindings选项添加a.xml
成功生成
注意:生成的转换类在目录org\w3\_2001\xmlschema\Adapter1.java手工复制到对应目录。
3、生成的目录中有Exception类,
删除生成的Exception类,将Exception_Exception类扩展java.lang.Exception
运行后报错:
根据提示,删除 ObjectFactory类中Exception相关的方法,成功运行
4、运行后报错:
是生成的请求/返回类的命名空间冲突,根据提示,将GetIsCheckIn类头上增加命名空间代码
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "getIsCheckIn", propOrder = {
"cancelCheckInRq"
},namespace="http://namespace.thats.not.the.same.as.the.generated")
TCPMON监控
java -classpath E:/axis.jar org.apache.axis.utils.tcpmon