一、首先 我们用的是CXF 3.1.15 版本
所需jar包如下
网上自行搜索下载cxf相应版本jar包即可。
另其依赖jar包如下
下载相应版本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版本则填写相应的版本号