SSH项目整合CXF提供Webservice接口

SSH项目整合CXF提供Webservice接口

说明:SSH项目中的Spring版本为4.1.5,CXF版本为3.0.9。(如果CXF为3.1以上版本则会报错不兼容)

  1. 下载CXF需要的相关jar包
  1. 下载地址:http://cxf.apache.org/download.html ,找到以前的版本,这里下载的是3.0.9版本,

SSH项目整合CXF提供Webservice接口

  1. 下载完成后解压,取出整合所需要的jar包,如下图

SSH项目整合CXF提供Webservice接口

  1. 移除项目中原有的多余Spring的jar包,不然会导致jar包冲突报错,因为项目中的jar包存在多余,Spring版本为4.1.5,移除低版本jar包,如下图(如果没有冲突jar包直接忽略本步骤)

SSH项目整合CXF提供Webservice接口

  1. 将步骤2)中CXF需要的jar包拷贝到WEB-INF/lib目录中,重新编译工程,
  2. 修改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>

  1. 新增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>

  1. 修改applicationContext.xml文件,加入CXF相关引用

SSH项目整合CXF提供Webservice接口

  1. 创建webservice服务端
  1. 新建接口ILoginService

@WebService

public interface ILoginService {

 

       String login(@WebParam(name = "username") String username,@WebParam(name = "password") String password);

 

}

  1. 实现类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;

 

       }

 

 }

 

  1. 配置webservice接口

SSH项目整合CXF提供Webservice接口

 

  1. 启动工程,在浏览器中输入路径:

http://192.168.5.46:8081/xxxx/ewebservice/userLogin?wsdl,出行如下信息则表示webservice发布成功

 

 

 

其中namespace跟路径在客户端访问的时候将会用到

SSH项目整合CXF提供Webservice接口