工作中我们常会接触到不同语言开发的系统之间的通信问题,此时我们需要接触到的就是webservice,下面贴上我个人开发的一个webservice小项目,在开发过程中遇到的一些小问题,贴出来与大家分享也方便自己以后查阅。
首先需要导入CXF与Spring相关的包到项目的WEB-INF/lib下,然后就可以进行我们的webservice开发了。本项目是用于登陆服务的,首先贴出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">
<display-name>CXF_Server</display-name>
<!-- 添加 CXF 的Servlet ,处理 webservice的请求 -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<!-- Spring 监听添加 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>
注意此处的spring监听服务不可以像ssm整合时候那样添加dispatchServlet类,会导致webservice部署失败,我查过相关的资料据说是因为配置多个监听器会冲突,所以不建议使用<servlet>标签,而改用<listener>与<context-param>标签导入spring配置文件。
<bean id="userServiceImpl" class="cn.zhang.service.UserServiceImpl"></bean>
<!-- 配置cxf -->
<jaxws:server address="/userManager" serviceClass="cn.zhang.service.UserService">
<jaxws:serviceBean><ref bean="userServiceImpl"/></jaxws:serviceBean>
<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:server>
上面是我的spring.xml关于cxf配置的部分代码。
package cn.zhang.service;
import javax.jws.WebService;
@WebService
public interface UserService {
public abstract String login(String username, String password);
public abstract String register(String username, String password);
}
注解方式基于接口开发webService服务 ,后面只要把接口实现类写好,就可以部署webservice服务了
访问路径http://127.0.0.1:8080/CXF(项目名)/ws(web.xml部署的监听器路径)就可以看到你的webservice服务了