WebService系列博客{十一}[CXF整合spring实际案例]
2013-01-17 15:11
441 查看
1、概述
在上文blog中已经发布了如何简单的发布一个CXF web service案例。本篇blog将会实际结合项目中的应用开放出来说明.本篇是一个发送短信的服务,本文只提供了保存到数据库的操作,导入jar包等操作本篇不再叙述。如若忘记请看上一篇blog。
2、被web service调用的dao层hibernateTemplate的保存Method
3、web service的接口和实现类编写
4、applicationContext配置web service服务
5、Web Service在xml中的配置CXFServlet
6、wsdl文件Url
http://localhost:8080/ROOT/CXFServlet/SendMessage?wsdl
在上文blog中已经发布了如何简单的发布一个CXF web service案例。本篇blog将会实际结合项目中的应用开放出来说明.本篇是一个发送短信的服务,本文只提供了保存到数据库的操作,导入jar包等操作本篇不再叙述。如若忘记请看上一篇blog。
2、被web service调用的dao层hibernateTemplate的保存Method
//Interface public interface SmsDao extends BaseDao { /** * 保存短信 * * @param sms * @return */ public Long saveSms(Sms sms); } //Impl @Component("smsDao") public class SmsDaoImpl extends BaseDaoImpl implements SmsDao { @Override public Long saveSms(Sms sms) { try { this.hibernateTemplate.save(sms); } catch (DataAccessException e) { e.printStackTrace(); return (long) 1; } return null; } } //本篇采用的Spring Mvc和Spring框架。将实现类通过Java注解的方式注入到xml中
3、web service的接口和实现类编写
//Web Service Interface code import java.util.Date; import javax.jws.WebParam; import javax.jws.WebService; /*** * 发送短信的webservice * @author zhanglei * */ @WebService(name = "SendMessage", targetNamespace = "http://webservice.sms.cn/") public interface SendMessage { public void SendMsg(@WebParam(name="SendTo")String SendTo, @WebParam(name="Msg")String Msg, @WebParam(name="SendTime")String SendTime); } //web service Impl Code import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.annotation.Resource; import javax.jws.WebService; import cn.com.swansoft.sms.dao.SmsDao; import cn.com.swansoft.sms.dao.pojo.Sms; @WebService(endpointInterface="cn.sms.webservice.SendMessage") public class SendMessageImpl implements SendMessage{ private SmsDao smsDao; public SmsDao getSmsDao() { return smsDao; } @Resource(name = "smsDao") public void setSmsDao(SmsDao smsDao) { this.smsDao = smsDao; } @Override public void SendMsg(String SendTo, String Msg, String SendTime) { Date d; try { Sms sms = new Sms(); sms.setAddTime(new Date()); sms.setMessage(Msg); sms.setMobile(SendTo); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); d = sdf.parse(SendTime); sms.setSendTime(d); sms.setSend(true); sms.setUsername("root"); sms.setOrderedTime(new Date()); smsDao.saveSms(sms); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
4、applicationContext配置web service服务
<?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:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" 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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "> <context:annotation-config/> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> <!-- 导入cxf.jar解压出来的文件 --> <import resource="../META-INF/cxf/cxf.xml"/> <import resource="../META-INF/cxf/cxf-extension-soap.xml"/> <import resource="../META-INF/cxf/cxf-servlet.xml"/> <!-- 声明Endpoint, address 为访问地址的部分地址 implementor 为实现类 --> <jaxws:endpoint id="SendMessage" address="/SendMessage" implementor="cn.sms.webservice.SendMessageImpl"/> <!-- 访问地址搭配web.xml中的CXFServlet的url-pattern使用本例url详解: http://localhost:8080/ROOT/CXFServlet/SendMessage?wsdl 首先url-pattern映射的是/CXFServlet/*配合上文的/SendMessage即可访问该wsdl --> <!-- 指定客户端访问相关情况 class 服务端接口 factory-bean 引用下面声明的类 factory-method 客户端生成调用对象所用方法 --> <bean id="client" class="cn.sms.webservice.SendMessage" factory-bean="clientFactory" factory-method="create"></bean> <!-- 配置CXF服务代理bean serviceClass : 服务端接口 address : 访问地址jaxws:endpoint声明的address在项目名的后面,此处的路径和web.xml配置的urlpattern有联系 --> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="cn.sms.webservice.SendMessage"></property> <property name="address" value="http://192.168.1.104:8080/ROOT/SendMessage"></property> </bean> </beans>
5、Web Service在xml中的配置CXFServlet
<!-- 以下是web service配置 --> <!-- 配置监听 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 部署servlet --> <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>/CXFServlet/*</url-pattern> </servlet-mapping> <!-- 以上是web service配置 --> <!—- 容器加载xml监听 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml </param-value> </context-param>
6、wsdl文件Url
http://localhost:8080/ROOT/CXFServlet/SendMessage?wsdl
相关文章推荐
- WebService-CXF和spring整合实现webservice案例(Spring配置注解环境)
- WebService系列博客{十}[CXF简单案例实现]
- WebService系列博客{十}[CXF简单案例实现]
- Spring整合CXF,发布RSETful 风格WebService
- spring整合cxf入门案例
- WebService技术总结(五):CXF整合Spring开发
- Spring整合CXF之发布WebService服务
- webservice学习之cxf与spring的整合
- Spring整合CXF,发布RSETful 风格WebService
- (五)WebService之CXF和Spring整合
- CXF webservice整合spring 小例子
- Spring CXF 整合 发布WebService
- CXF与Spring整合开发WebService服务
- SpringBoot整合cxf发布WebService服务和客户端调用WebService服务
- 五、CXF WebService整合Spring
- CXF整合Spring开发WebService
- ssh整合系列博客——(2)spring和hibernate整合的异常解决
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
- 五、CXF WebService整合Spring
- Spring整合CXF webservice restful 实例