spring+cxf发布webservice

来源:互联网 发布:ucloud云计算 校园 编辑:程序博客网 时间:2024/05/16 18:12
cxf引入maven
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-wsdl</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
   <groupId>com.sun.xml.bind</groupId>
   <artifactId>jaxb-impl</artifactId>
   <version>2.2.11</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-jaxb</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
   <groupId>org.apache.geronimo.specs</groupId>
   <artifactId>geronimo-jaxws_2.2_spec</artifactId>
   <version>1.2</version>
</dependency>
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" 
    id="WebApp_ID">


    <display-name>test</display-name>
    <context-param>
        <param-name>defaultHtmlEscape</param-name>
        <param-value>true</param-value>
    </context-param>
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet>
    <servlet-name>CXFServlet</servlet-name>  
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>
    <servlet-mapping>  
        <servlet-name>CXFServlet</servlet-name>  
        <url-pattern>/webservice/*</url-pattern>  
    </servlet-mapping>
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
<!--  为了不影响spring配置文件,cxf.xml单独引用 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/spring/spring-servlet.xml,classpath:/spring/spring-cxf.xml</param-value>
    </context-param>
    
    <session-config>
    <cookie-config>
    <http-only>true</http-only>
    <secure>true</secure>
    </cookie-config>
    </session-config>
</web-app>
spring-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" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
                            http://www.springframework.org/schema/beans/spring-beans-3.1.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="jiakangxiaowu" implementor="com.test.webservice.JianKangXiaoWuServiceImpl">
    <jaxws:features>  
          <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing"/>  
    </jaxws:features>
    </jaxws:endpoint>
 
</beans>


webservice接口


import javax.jws.WebMethod;
import javax.jws.WebService;
<!-- http://100.100.200.100:1118  外网地址和端口 -->
@WebService(targetNamespace = "http://100.100.200.100:1118/test/webservice/xiaowu?wsdl")
public interface JianKangXiaoWuService {


@WebMethod
String funMain(String request);

}


webserviceimpl实现
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import javax.jws.WebService;
import javax.xml.ws.BindingType;


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
<!-- webservice服务名称:JianKangXiaoWuService  不区分大小写 -->
@WebService(serviceName = "JianKangXiaoWuService",targetNamespace = "http://100.100.200.100:1118/idc-http/webservice/xiaowu?wsdl", endpointInterface = "com.sankai.idc.gateway.webservice.JianKangXiaoWuService" )
@BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/")
public class JianKangXiaoWuServiceImpl implements JianKangXiaoWuService {


Logger logger = LoggerFactory.getLogger(JianKangXiaoWuServiceImpl.class);

<!--  webservice请求方法名:funMain  必须对应-->
@Override
public String funMain(String body) {
logger.info("获取到上传的数据:" + body);
Map<String, String> data = new HashMap<String, String>();
Document document = DocumentHelper.parseText(body);
Element businessdata = document.getRootElement();
data.put("checkdate", businessdata.attributeValue("checkdate"));
for(Iterator i = businessdata.elementIterator(); i.hasNext();) {
Element node = (Element) i.next();
data.put(node.getName(), node.getText());
}
logger.info("上传数据转换为的map为:" + GsonUtils.toJson(data));

}
0 0