需求:实现基于cxf框架的webservice
主要内容
- 实现基于cxf框架的webservice
- webservice发布多个服务
- 实现webservice的安全访问
开发环境
- jdk 1.8
- eclipse 2018-10-09版
- maven 3.5
- tomcat 8.5
调试工具
- 浏览器
- SoapUI接口调试工具(推荐**)
spring项目实现基于cxf框架的webservice
1、cxf jar包
<!-- cxf相关依赖 -->
<!-- cxf-core -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.2.5</version>
</dependency>
<!-- cxf-rt-frontend-jaxws -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.5</version>
</dependency>
<!-- cxf-rt-transports-http -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.5</version>
</dependency>
<!-- cxf-rt-ws-security -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.2.5</version>
</dependency>
2、spring.xml相关配置
约束命名空间不能少
<!-- 下面是使用 cxf 配置的 webService -->
<!-- define web service provider -->
<!-- 配置第一个服务 -->
<!-- 要暴露给外部调用的接口,address:请求路径 -->
<jaxws:endpoint id="jdWebService"
implementor="com.zy.api.publish.route.jdWebServiceImpl"
address="/jdWebService">
<!-- 添加客服端请求拦截器 -->
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
</jaxws:inInterceptors>
<!-- 添加服务器端响应拦截器 -->
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
</jaxws:outInterceptors>
</jaxws:endpoint>
3、web.xml配置
<!-- webservice之cxf相关配置 -->
<servlet>
<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>/services/*</url-pattern>
</servlet-mapping>
4、接口类编写:
package com.zy.api.publish.route;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
* @author TSY
*
* @Date: 2018-09-10
*
*
*/
@WebService(targetNamespace = "com.serviceTargetName")
public interface jdWebService {
public String waterPredictMinute(@WebParam(name = "jsonObj") String json);
public String waterPredictHour(@WebParam(name = "jsonObj") String json);
public String warning(@WebParam(name = "jsonObj") String json);
public String dispatcher(@WebParam(name = "jsonObj") String json);
public String closeLoopDispatcher(@WebParam(name = "jsonObj") String json);
public String closeLoopWater(@WebParam(name = "jsonObj") String json);
}