CXF +SpringMvc 生成服务端

  1. 下载apache cxf 文件配置相关JDK
  2. 生成 model_cxf.wsdl模板文件,拷贝至D:\apache-cxf\bin 目录下
  3. 命令cmd窗口切换至cxf文件存在的目录如 D:\apache-cxf\bin 执行wsdl2java -impl -server -p com.demo model_cxf.wsdl
  4. 拷贝生成的代码至maven项目工程中
  5. 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>`
  1. 配置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> 
  1. 配置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" />

  1. 启动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();
    }
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值