spring整合cxf实现webservice发布

来源:互联网 发布:手机淘宝卖家怎么取消 编辑:程序博客网 时间:2024/05/28 19:23

1.用maven引入相关jar包

<pre class="html" name="code"><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.2.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.2.6.RELEASE</version></dependency><!-- cxf --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.0.2</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>3.0.2</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>3.0.2</version></dependency>

2.spring的核心配置文件

<?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.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">    <import resource="classpath:META-INF/cxf/cxf.xml" /><import resource="classpath:META-INF/cxf/cxf-servlet.xml" />       <!-- 主地址:http://localhost:8080/项目名称/cxf/后面的路径才是jaxws:server的地址浏览器访问 http://localhost:8080/项目名称/cxf/emailWSService?wsdlserviceClass:是接口的类jaxws:serviceBean:接口的实现类 --><jaxws:server id="emailWSService" address="/emailWSService" serviceClass="com.mmc.ws.EmailWSService"><jaxws:serviceBean><bean class="com.mmc.ws.impl.EmailWSServiceImpl" /></jaxws:serviceBean><!-- 配置输入输出的拦截器,方便查看请求和相应的消息,也可以不配置 --><jaxws:inInterceptors><bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean><bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />    </jaxws:inInterceptors><jaxws:outInterceptors><bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean></jaxws:outInterceptors></jaxws:server></beans>    

3.在web.xml中添加

<!-- Spring侦听 -->  <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:spring/applicationContext.xml</param-value>  </context-param>  <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>
<!-- CXF Webservice -->  <servlet>    <servlet-name>cxf</servlet-name>    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    </servlet>    <servlet-mapping>    <servlet-name>cxf</servlet-name>    <url-pattern>/cxf/*</url-pattern>    </servlet-mapping>

4.接口类

package com.mmc.ws;import javax.jws.WebService;@WebServicepublic interface EmailWSService {public String getData(String requestData);}

5.实现类

package com.mmc.ws.impl;import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.mmc.mapper.email.EmailMapper;import com.mmc.ws.EmailWSService;@Servicepublic class EmailWSServiceImpl implements EmailWSService{@Autowiredprivate EmailMapper emailMapper;/** * 这样就和spring无缝整合了,业界一般xml进行数据交互(也称为报文),请求数据是xml字符串,返回去的也是xml字符串 * @param requestData * @return */public String getData(String requestData){emailMapper.getAllMails("234234");//这里是模拟数据,正常应该是根据业务逻辑从DAO层取数据,然后组装成xml返回return "hello====>>>"+requestData;}}

这是项目里提取出来的,可能有问题,如有,添加QQ729088240





0 0