Maven整合Spring、CXF创建WebService服务端

一、加入CXF所需要的依赖

<!--web service 以下都是cxf必备的--> 
<!--org.apache.cxf.transport.servlet.CXFServlet--> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http</artifactId> 
     <version>3.1.8</version> 
    </dependency> 
<!--不加这个包会报错Unable to locate spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws]--> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxws</artifactId> 
     <version>3.1.8</version> 
    </dependency>
    <!-- 用tomcat启动项目,所以没有引入jetty的依赖,如有需要自行引入-->

二、创建WebService

所需要的实体类

public class DepartmentModel {
    private String id;
    private String departmentId;
    private String departmentName;
    private String superId; 
    private String superDepartmentId;
    .......(getset方法)
}

1、创建接口

import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.critc.xtgl.zdgl.model.DepartmentModel;

@WebService//该注解标记这是一个webService服务接口
public interface CenterWebService {

List<DepartmentModel> getDepartmentIdBySuperId(@WebParam(name="centerId")String centerId);
}

2、实现类

import java.util.List;
import javax.jws.WebService;
import org.springframework.beans.factory.annotation.Autowired;
import com.critc.xtgl.zdgl.dao.DepartmentDao;
import com.critc.xtgl.zdgl.model.DepartmentModel;

@WebService(endpointInterface="com.critc.cxf.CenterWebService")
public class CenterWebServiceImpl implements CenterWebService {

    @Autowired
    DepartmentDao departmentDao;
    @Override
    public List<DepartmentModel> getDepartmentIdBySuperId(String centerId) {
        return departmentDao.getDepartmentIdBySuperId(centerId);
    }
}

大家可根据自己的需要,自己创建接口和实现类,该例中的Dao层,不在展示了。

3、创建spring-webservice.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://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
    default-lazy-init="true">   
    <!--发布webservice -->    
    <!-- 引cxf的一些核心配置 -->
   <import resource="classpath:META-INF/cxf/cxf.xml" />
   <!-- <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> 3.1以上的jar包不用再引入该配置,否则会报错
-->  
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 
   <!-- jaxws endpoint定义 -->
   <!--web.xml配置了webservice的访问路径/*,那么/webCenter?wsdl就是该webservice的访问路径 -->  
    <jaxws:endpoint id="CenterWebService" implementor="com.critc.cxf.CenterWebServiceImpl"
        address="/webCenter">
    </jaxws:endpoint> <!--发布webservice -->  
</beans>

4、在web.xml中引入spring-webservice.xml
这里写图片描述

<!--Spring MVC是通过DispatcherServlet来加载Spring配置文件的,因此不需要在web.xml中配置ContextLoaderListener。 
        但是CXF却需要通过ContextLoaderListener来加载Spring。 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 
    <!-- 配置CXF框架的核心Servlet -->
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

5、部署到tomcat中启动即可
启动成功后,可在浏览器中访问查看wsdl文件
访问地址:http://localhost:8080/项目名/webCenter?wsdl
这里写图片描述

猜你喜欢

转载自blog.csdn.net/xue2xue/article/details/80006599