CXF WebService接口 配置 到项目 步骤详解

一、首先 我们用的是CXF 3.1.15 版本

所需jar包如下

CXF WebService接口 配置 到项目 步骤详解

网上自行搜索下载cxf相应版本jar包即可。

另其依赖jar包如下

CXF WebService接口 配置 到项目 步骤详解

 下载相应版本jar包配置好即可。

二、xml配置

1、web.xml :在Web.xml中加入如下xml 以用cxf拦截相应路径请求

<servlet>  
        <servlet-name>CXFServlet</servlet-name>  
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>CXFServlet</servlet-name>  
        <url-pattern>/webservices/*</url-pattern>  
    </servlet-mapping>

2、配置相应的cxf-bean.xml,放到WEB-INFO下即可

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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    <!-- 引入CXF Bean定义如下,早期的版本中使用 -->
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    
  <!-- OM Web Service -->
 
  <!--这只是个例子,完全仿照例子写就行-->
  <jaxws:server id="OSSProcessSheetService" serviceClass="com.inspur.om.webservice.wsInterfaces.IOSSProcessSheetService" address="/OSSProcessSheetService">  
    <jaxws:serviceBean>
        <bean class="com.inspur.om.webservice.service.OSSProcessSheetService" />  
    </jaxws:serviceBean>
  </jaxws:server>
</beans>

 

3、在web.xml中引入cxf-bean.xml

加入如下语句:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
       
            /WEB-INF/cxf-bean.xml
        </param-value>
    </context-param>

4、编写webService接口类。

cxf的WebService接口需要写一个接口类和一个实现类,实现类需继承接口类。

接口类实例如下:IOSSProcessSheetService.java

@WebService(targetNamespace = "http://webservice.inspur.com", name = "OSSProcessSheetService")
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface IOSSProcessSheetService {
    @WebMethod(operationName = "isAlive")
    @WebResult(name = "isAlive_response", partName = "request")
    public String isAlive(String serCaller, String callTime);

}

 

实现类实例如下:OSSProcessSheetService.java

@javax.jws.WebService(
        serviceName = "OSSProcessSheetService",
        portName = "OSSProcessSheetService_servicePort",
        targetNamespace = "http://webservice.inspur.com",
        wsdlLocation = "file:/F:/OSSProcessSheetService.wsdl",
        endpointInterface = "com.inspur.om.webservice.wsInterfaces.IOSSProcessSheetService")
public class OSSProcessSheetService implements IOSSProcessSheetService{
public String isAlive(String serCaller, String callTime) {
        log.debug("========isAlive method is called========");
        log.debug("========serCaller="+serCaller+";callTime="+callTime);
        Document response = DocumentHelper.createDocument(DocumentHelper.createElement("response"));
        try {
            //记录日志
            response.getRootElement().add(DocumentHelper.createElement("success").addText("true"));
        } catch (Exception e) {
            e.printStackTrace();
            response.getRootElement().add(DocumentHelper.createElement("success").addText("false"));
            response.getRootElement().add(DocumentHelper.createElement("message").addText(e.getMessage()));
            log.error(e.getMessage(), e);
        }
        
        return response.asXML();
    }

 

}

 

五、注意点:

1、webService配置的实现类不允许和Spring配置的bean重复,也就是一个类不允许既在webservice里面配置又在spring里面配置

2、cxf-bean里面的xml头中http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 中的3.0 需要对应相应的spring版本号,你的spring是4.0版本则填写相应的版本号

上一篇:shiro技术四大组件和运行原理是什么?


下一篇:java安全编码指南之:基础篇