用cxf集成spring的demo

1.在web.xml配置一下内容

<!-- webservice 相关配置 -->
    <servlet>  
        <display-name>cxfServlet</display-name>  
        <servlet-name>cxfServlet</servlet-name>  
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
        <init-param>  
            <param-name>config-location</param-name>  
            <param-value>WEB-INF/config/webservice-servlet.xml</param-value>  
        </init-param>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>cxfServlet</servlet-name>  
        <url-pattern>/services/*</url-pattern>  
    </servlet-mapping>  

2.webservice-servlet.xml配置如下:

<span>GmDataExchangeWebServiceImp</span>

<?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-2.0.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-extension-soap.xml"/>
   	<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
        <jaxws:endpoint id="gmDataExchangeWs" implementor="com.jeecms.cms.webservice.imp.GmDataExchangeWebServiceImp" address="/gmDataExchangeWs" />
</beans>

3.定义接口IGmDataExchangeWebService

import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * 交易信息-变更公示接口
 * @author Administrator
 *
 */
@WebService(<span style="color:#ff0000;">targetNamespace</span>="interfaces.webservice.cms.jeecms.com")
public interface IGmDataExchangeWebService {
	public String saveOrUpdateExchangeData(
			@WebParam(name="businessXml") String businessXml,
			@WebParam(name="authenticateXml") String authenticateXml,
			@WebParam(name="type") String type);
}

4.实现接口

@WebService(endpointInterface="com.jeecms.cms.webservice.interfaces.IGmDataExchangeWebService",
		targetNamespace="interfaces.webservice.cms.jeecms.com")
public class GmDataExchangeWebServiceImp implements IGmDataExchangeWebService {
	
	public String saveOrUpdateExchangeData(String businessXml,String authenticateXml,String type) {
		//TODO
		return null;
	}
}

5.访问http://ip:port/services/gmDataExchangeWs?wsdl


6.调用接口demo

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.hibernate.envers.tools.Tools;

import sun.misc.BASE64Encoder;

import com.jeecms.cms.util.PropertiesUtil;
import com.jeecms.cms.util.StaticVariableUtil;
import com.jeecms.cms.util.ToolsUtil;
import com.jeecms.cms.util.WebserviceUtil;

public class WebServiceTest {
 
	public static void main(String[] args){
		String serverURL = "http://192.9.5.11:8080/services/gmDataExchangeWs?wsdl";
		DefaultHttpClient httpClient = new DefaultHttpClient();
		HttpPost httppost = new HttpPost(serverURL);
		Map<String,String> paramMap = new HashMap<String, String>();
		paramMap.put("businessXml", getBusinessXml());
		paramMap.put("authenticateXml", getAuthenticateXml());
		paramMap.put("type", "1");
		String soapRequestData = getRequestXml("interfaces.webservice.cms.jeecms.com", "saveOrUpdateExchangeData", paramMap);
		try {
			HttpEntity re = new StringEntity(soapRequestData,HTTP.UTF_8);
			httppost.setHeader("Content-Type","application/soap+xml; charset=utf-8");  
			httppost.setEntity(re);           
			HttpResponse response = httpClient.execute(httppost);  
			//输出结果
			if(response.getStatusLine().getStatusCode() == 200){
				String xmlStr = EntityUtils.toString(response.getEntity());
				xmlStr = ToolsUtil.decodeString(xmlStr);
				int beginIndex = xmlStr.indexOf("<return>")+"<return>".length();
				int endIndex = xmlStr.indexOf("</return>");
				String returnStr = xmlStr.substring(beginIndex, endIndex);
				System.out.println(returnStr);
				if("".equals(returnStr)){
					//TODO
				}
				else{
					//TODO
				}
			}
			else{
				System.out.println("调用接口失败");
				//TODO
			}
		} catch (Exception e) {
			e.printStackTrace();
		}  finally{
			httpClient.getConnectionManager().shutdown();  
		}
		
	}
	public static String getRequestXml(String nameSpace, String method, Map<String,String> paramMap){
		StringBuilder sb = new StringBuilder();
		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		sb.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ");
		sb.append(" xmlns:sam=\""+nameSpace+"\" ");  //命名空间
		sb.append(" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"");
		sb.append(" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
		sb.append("<soap:Header/>");
		sb.append("<soap:Body>");
		sb.append("<sam:"+method+">");  //调用方法名
		if(paramMap != null && !paramMap.isEmpty()){
			for(Map.Entry<String, String> entry : paramMap.entrySet()){
				String key = (String)entry.getKey();
				String value = (String)entry.getValue();
				value = value == null?"":value;
				sb.append("<"+key+"><![CDATA["+value+"]]></"+key+">"); //传参
			}
		}
		sb.append("</sam:"+method+">");
		sb.append("</soap:Body>");
		sb.append("</soap:Envelope>");
		
		return sb.toString();
	}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值