- 下载apache cxf 文件配置相关JDK
- 生成 model_cxf.wsdl模板文件,拷贝至D:\apache-cxf\bin 目录下
- 命令cmd窗口切换至cxf文件存在的目录如 D:\apache-cxf\bin 执行wsdl2java -impl -server -p com.demo model_cxf.wsdl
- 拷贝生成的代码至maven项目工程中
- pox.xml 配置lib
<!-- cxf webservice -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.2</version>
</dependency>`
- 配置web.xml
<servlet>
<description>Apache CXF Endpoint</description>
<display-name>cxf</display-name>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/cxf/*</url-pattern>
</servlet-mapping>
- 配置cxf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="Model_Cxf"
implementor="com.Model_CxfPortImpl(生成文件的实现类路径)"
address="/Model_Cxf"
wsdlLocation="model_cxf.wsdl(文件存在的路径)">
<jaxws:inInterceptors>
<bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
<bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:inInterceptors>
</jaxws:endpoint>
</beans>
并且在springMVC.xml 文件中引用<import resource="classpath:cxf.xml" />
- 启动tomcat访问地址
http://localhost:8080/demo/cxf/Model_Cxf?wsdl
package com.Model_Cxf;
import net.sf.json.JSONObject;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
public final class Model_CxfPortImpl {
private static final QName SERVICE_NAME = new QName("http://localhost:8080/demo/cxf/Model_Cxf", "Model_Cxf");
private Model_CxfPortImpl() {
}
public static InputParameters initParam(String json) {
ObjectFactory objectFactory = new ObjectFactory();
InputParameters payload = objectFactory.createInputParameters();
MSGHEADER msgheader = buildMSGHEADER();
payload.setMSGHEADER(msgheader);
INPUTCOLLECTION inputcollection = objectFactory.createINPUTCOLLECTION();
List<INPUTCOLLECTIONITEM> itemlist = inputcollection.getINPUTCOLLECTIONITEM();
INPUTCOLLECTIONITEM inputcollectionitem = objectFactory.createINPUTCOLLECTIONITEM();
String str = json;
inputcollectionitem.setINPUTJSON(str);
itemlist.add(inputcollectionitem);
payload.setINPUTCOLLECTION(inputcollection);
return payload;
}
public static MSGHEADER buildMSGHEADER() {
MSGHEADER msgHeader = new MSGHEADER();
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(new Date());
XMLGregorianCalendar gc = null;
try {
gc = DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar);
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
}
return msgHeader;
}
public static String result(){
StringBuffer sb = new StringBuffer();
URL wsdlURL = Model_CxfService.WSDL_LOCATION;//WSDL服务的地址
Model_CxfService_Service ss = new Model_CxfService(wsdlURL, SERVICE_NAME);//action调用
Model_CxfServiceSrv port = ss.getModel_CxfServicePort();
InputParameters payload = initParam(sb.toString());
OutputParameters re = port.process(payload);
return re.getOUTPUTJSON();
}