SSH项目整合CXF提供Webservice接口
SSH项目整合CXF提供Webservice接口
说明:SSH项目中的Spring版本为4.1.5,CXF版本为3.0.9。(如果CXF为3.1以上版本则会报错不兼容)
- 下载CXF需要的相关jar包
- 下载地址:http://cxf.apache.org/download.html ,找到以前的版本,这里下载的是3.0.9版本,
- 下载完成后解压,取出整合所需要的jar包,如下图
- 移除项目中原有的多余Spring的jar包,不然会导致jar包冲突报错,因为项目中的jar包存在多余,Spring版本为4.1.5,移除低版本jar包,如下图(如果没有冲突jar包直接忽略本步骤)
- 将步骤2)中CXF需要的jar包拷贝到WEB-INF/lib目录中,重新编译工程,
- 修改web.xml配置文件,加入CXFServlet
<servlet>
<servlet-name>cxfServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cxfServlet</servlet-name>
<url-pattern>/ewebservice/*</url-pattern>
</servlet-mapping>
- 新增LetCxfGoFilter过滤器为CXF放行
public class LetCxfGoFilter extends StrutsPrepareAndExecuteFilter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
//如果路径包含cxf则放行,路径自己选择填写。
if(request.getRequestURI().contains("webservice")){
arg2.doFilter(arg0, arg1);
}
else{super.doFilter(arg0,arg1, arg2);
}
}
}
修改web.xml文件,将过滤器配置为新增的LetCxfGoFilter
<filter>
<filter-name>struts2</filter-name>
<filter-class>
com.shiyou.utils.LetCxfGoFilter
</filter-class>
</filter>
- 修改applicationContext.xml文件,加入CXF相关引用
- 创建webservice服务端
- 新建接口ILoginService
@WebService
public interface ILoginService {
String login(@WebParam(name = "username") String username,@WebParam(name = "password") String password);
}
- 实现类LoginService
@WebService(endpointInterface = "com.shiyou.cxf.service.ILoginService",serviceName = "userLogin")
public class LoginService implements ILoginService {
@Override
public String login(String username, String password) {
LoginHelper loginHelper = new LoginHelper();
CommandBean commandBean = loginHelper.onLogin(username, password);
String jsonStr = JsonOperator.toJson(commandBean);
return jsonStr;
}
}
- 配置webservice接口
- 启动工程,在浏览器中输入路径:
http://192.168.5.46:8081/xxxx/ewebservice/userLogin?wsdl,出行如下信息则表示webservice发布成功
其中namespace跟路径在客户端访问的时候将会用到