一、加入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;
.......(get、set方法)
}
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