- 浏览: 332798 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zqb666kkk:
有示例代码吗
WebService CXF学习(高级篇3):WS-Security -
zhujiangtaobl0505:
楼主有源码没?发下,我邮箱465971531@qq.com,我 ...
WebService CXF学习(高级篇2):CXF+Spring+Hibernate -
ssy341:
http://localhost:8080/jforum/in ...
JForum安装详解 -
songzht:
看了上面的代码,这两个类型是怎么定义的?private Bas ...
JfreeChar结合struts2展示柱状图和饼状图(已解决乱码问题) -
Getwaysun:
持久化类中使用boolean定义某个字段后,报Null val ...
null不能赋值给int类型,Integer可以。
通过前面两节的讲解,相信你对CXF框架开始有一些认识了。在当今项目开发中,Spring框架基上都用到过,那么它怎么与CXF结合呢,这就是我们这一间要讲的内容。好了,闲话少说。
首先,在前面基础上再导入几个spring要用到的几个.jar包:
spring-core.jar
spring-jdbc.jar
spring-context.jar
spring-orm.jar
spring-beans.jar
spring-tx.jar
包导入完之后,我们还不能开如干活,配置几荐参数,便于下一步工作。
配置CXF框架
我的电脑->属性->高级->环境变量
创建一个CXF_HOEM变量,值为CXF框架所在根目录,修改一下
CLASSPATH=%CXF_HOME%/lib;PATH=%CXF_HOME%/bin;这时有会问为什么要配置这两个参数据呢,其实配置这两个参数用途与配置JAVA变量一下,在DOS窗口下直接运行java2ws,wsdl2java等可执行文件。当然你没有配置也可以进到CXF框架的bin目录下远行这个几个可执行文件。
配置好了后,你在DOS窗口下输入java2ws,看看配置是否效。肯定没有成功,原因是使用6.0的JDK,我们还得在%JAVA_HOME%/jre/lib目录下创建一下endorsed文件夹,将jaxb-api.jar,jaxws.jar拷贝进去。现在再运一下java2ws,成功运行,配置生效了。
基本工作做得差不多,整合spring框架正式开始:
第一步:新一个web project,导入要用到.jar包,其实CXF利用org.apache.cxf.transport.servlet.CXFServlet来拦截所有web请求,将其配置到web.xml中。配置如下:
Java代码
注意一下绿色字体
CXF框架配置好了,我就来开发一个WebService接口
Java代码
这里面有四个方法,其中有一个涉及到对象,这一点前面一节讲到怎么处理它。放在这里是再回顾前节内容。
创建一个WebService接口实现类
Java代码
由于本节只讲解与Spring整合,没有涉及到数据库,因就打印一下传递过来的对象内容来证明整合成功。与spring,hibernate整合后面章节会讲到,请留意后面章节。
传递对象,当然创建对象啦
Java代码
做了这么多工作,有人又会问,怎么现在做的与spring框架就没一点联系,呵呵,确实是这样。开戏开场了,利用Spring来发布WebService接口:
Java代码
服务端开发工作基本结束。现在打包部署到Tomcat6.0.18(本人目前使用的测试服务器,你当然可以使用别的服务器)
服务器启动完成后,打开浏览器在地址栏中输入http://localhost:port/project name/Service?wsdl看看接口是否发成功。
接下来就是开发一个客户端了。
另建一个web project,现在前面的参数配置要起作用了,cmd进入DOS环境下输入wsdl2java -p com.itdcl.service(自定义包名) http://localhost:port/project name/Service?wsdl(前提是服务器没停止)
敲击Enter,wsdl2java工具帮你将发布出来的wsdl文件转换成webservice接口,到指定目录下将com.itdcl.service拷到刚才另建的web project的src目录下。
现在,我们就来创建一个客户端程序:
Java代码
看得仔细的朋友就会问了,ServerUserInfo 这个类那来的,你进到com.itdcl.service目录下就会看到,是WebService发布出来的。
到目前为止,客户端还没有完成,你没有看到程序中ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");这个bean.xml就是spring框架来注删除WebService接口的。好啦,创建一个bean.xml,内容如下:
Java代码
留意一下绿色字体
剩下的事就是运行客户端程序了,没有异常抛出,打印出:name:Josen,则恭喜你CXF框架与Spring整合成功。
首先,在前面基础上再导入几个spring要用到的几个.jar包:
spring-core.jar
spring-jdbc.jar
spring-context.jar
spring-orm.jar
spring-beans.jar
spring-tx.jar
包导入完之后,我们还不能开如干活,配置几荐参数,便于下一步工作。
配置CXF框架
我的电脑->属性->高级->环境变量
创建一个CXF_HOEM变量,值为CXF框架所在根目录,修改一下
CLASSPATH=%CXF_HOME%/lib;PATH=%CXF_HOME%/bin;这时有会问为什么要配置这两个参数据呢,其实配置这两个参数用途与配置JAVA变量一下,在DOS窗口下直接运行java2ws,wsdl2java等可执行文件。当然你没有配置也可以进到CXF框架的bin目录下远行这个几个可执行文件。
配置好了后,你在DOS窗口下输入java2ws,看看配置是否效。肯定没有成功,原因是使用6.0的JDK,我们还得在%JAVA_HOME%/jre/lib目录下创建一下endorsed文件夹,将jaxb-api.jar,jaxws.jar拷贝进去。现在再运一下java2ws,成功运行,配置生效了。
基本工作做得差不多,整合spring框架正式开始:
第一步:新一个web project,导入要用到.jar包,其实CXF利用org.apache.cxf.transport.servlet.CXFServlet来拦截所有web请求,将其配置到web.xml中。配置如下:
Java代码
<web-app> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applicationContext-*.xml,/WEB-INF/classes/webservice.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> [color=red]<servlet> <servlet-name>CXFServlet</servlet-name> <display-name>CXF Servlet</display-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>/*</url-pattern> </servlet-mapping>[/color] </web-app> <web-app> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applicationContext-*.xml,/WEB-INF/classes/webservice.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> [color=red]<servlet> <servlet-name>CXFServlet</servlet-name> <display-name>CXF Servlet</display-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>/*</url-pattern> </servlet-mapping>[/color] </web-app>
注意一下绿色字体
CXF框架配置好了,我就来开发一个WebService接口
Java代码
@WebService public interface IService { //public void save(@WebParam(name="info")String xml); public void save(@WebParam(name="dto")UserInfoDTO dto,@WebParam(name="flag")boolean flag); public void update(@WebParam(name="info")String xml); public void delete(@WebParam(name="id")int id); public @WebResult(name="String")String get(@WebParam(name="id")int id); } @WebService public interface IService { //public void save(@WebParam(name="info")String xml); public void save(@WebParam(name="dto")UserInfoDTO dto,@WebParam(name="flag")boolean flag); public void update(@WebParam(name="info")String xml); public void delete(@WebParam(name="id")int id); public @WebResult(name="String")String get(@WebParam(name="id")int id); }
这里面有四个方法,其中有一个涉及到对象,这一点前面一节讲到怎么处理它。放在这里是再回顾前节内容。
创建一个WebService接口实现类
Java代码
@WebService public class ServiceImpl implements IService { private Logger log = LoggerFactory.getLogger(ServiceImpl.class); public void delete(int id) { log.info("delete id is {} user"+id); } public void save(UserInfoDTO dto,boolean flag) { System.out.println("name:"+dto.getName()); } public void update(String xml) { } public String get(int id){ return null; } } @WebService public class ServiceImpl implements IService { private Logger log = LoggerFactory.getLogger(ServiceImpl.class); public void delete(int id) { log.info("delete id is {} user"+id); } public void save(UserInfoDTO dto,boolean flag) { System.out.println("name:"+dto.getName()); } public void update(String xml) { } public String get(int id){ return null; } }
由于本节只讲解与Spring整合,没有涉及到数据库,因就打印一下传递过来的对象内容来证明整合成功。与spring,hibernate整合后面章节会讲到,请留意后面章节。
传递对象,当然创建对象啦
Java代码
@XmlType(name="ServerUserInfo") @XmlAccessorType(XmlAccessType.FIELD) public class UserInfoDTO implements java.io.Serializable { private static final long serialVersionUID = -4666026219400887433L; private Integer id; private String name; private Integer age; private Integer address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getAddress() { return address; } public void setAddress(Integer address) { this.address = address; } public UserInfoDTO() { } } @XmlType(name="ServerUserInfo") @XmlAccessorType(XmlAccessType.FIELD) public class UserInfoDTO implements java.io.Serializable { private static final long serialVersionUID = -4666026219400887433L; private Integer id; private String name; private Integer age; private Integer address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getAddress() { return address; } public void setAddress(Integer address) { this.address = address; } public UserInfoDTO() { } }
做了这么多工作,有人又会问,怎么现在做的与spring框架就没一点联系,呵呵,确实是这样。开戏开场了,利用Spring来发布WebService接口:
Java代码
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [color=red]xmlns:jaxws="http://cxf.apache.org/jaxws"[/color] xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> [color=red] <!--导入与CXF框架有关的xml--> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />[/color] <!--布布WebService接口--> <jaxws:endpoint id="service" implementor="com.itdcl.service.ServiceImpl" address="/Service"> </jaxws:endpoint> </beans> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [color=red]xmlns:jaxws="http://cxf.apache.org/jaxws"[/color] xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> [color=red] <!--导入与CXF框架有关的xml--> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />[/color] <!--布布WebService接口--> <jaxws:endpoint id="service" implementor="com.itdcl.service.ServiceImpl" address="/Service"> </jaxws:endpoint> </beans>
服务端开发工作基本结束。现在打包部署到Tomcat6.0.18(本人目前使用的测试服务器,你当然可以使用别的服务器)
服务器启动完成后,打开浏览器在地址栏中输入http://localhost:port/project name/Service?wsdl看看接口是否发成功。
接下来就是开发一个客户端了。
另建一个web project,现在前面的参数配置要起作用了,cmd进入DOS环境下输入wsdl2java -p com.itdcl.service(自定义包名) http://localhost:port/project name/Service?wsdl(前提是服务器没停止)
敲击Enter,wsdl2java工具帮你将发布出来的wsdl文件转换成webservice接口,到指定目录下将com.itdcl.service拷到刚才另建的web project的src目录下。
现在,我们就来创建一个客户端程序:
Java代码
public class SampleClient { ublic static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "beans.xml"); IService service = (IService)context.getBean("service"); ServerUserInfo userInfo = new ServerUserInfo(); userInfo.setAddress(1); userInfo.setAge(100); userInfo.setName("Jason"); service.save(userInfo,true); service.delete(1); } public class SampleClient { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "beans.xml"); IService service = (IService)context.getBean("service"); ServerUserInfo userInfo = new ServerUserInfo(); userInfo.setAddress(1); userInfo.setAge(100); userInfo.setName("Jason"); service.save(userInfo,true); service.delete(1); } }
看得仔细的朋友就会问了,ServerUserInfo 这个类那来的,你进到com.itdcl.service目录下就会看到,是WebService发布出来的。
到目前为止,客户端还没有完成,你没有看到程序中ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");这个bean.xml就是spring框架来注删除WebService接口的。好啦,创建一个bean.xml,内容如下:
Java代码
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [color=red]xmlns:jaxws="http://cxf.apache.org/jaxws[/color]" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd [color=red]http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd[/color]"> <jaxws:client id="service" address="http://localhost:9999/cxf/Service" serviceClass="com.itdcl.service.IService" /> </beans> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [color=red]xmlns:jaxws="http://cxf.apache.org/jaxws[/color]" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd [color=red]http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd[/color]"> <jaxws:client id="service" address="http://localhost:9999/cxf/Service" serviceClass="com.itdcl.service.IService" /> </beans>
留意一下绿色字体
剩下的事就是运行客户端程序了,没有异常抛出,打印出:name:Josen,则恭喜你CXF框架与Spring整合成功。
发表评论
-
WebService CXF学习(高级篇3):WS-Security
2011-03-21 10:15 2222这一节我们来探讨一下WebService安全问题,如果所有系统 ... -
WebService CXF学习(高级篇2):CXF+Spring+Hibernate
2011-03-21 10:13 1852前一节仅仅只讲了与Spring整合,没有涉及到数据库,而且 ... -
WebService CXF学习(进阶篇4):JAXB剖析
2011-03-21 10:08 2056前面几节我们讲解对象传递,但是通常情况下我们不直接传对象,因为 ... -
WebService CXF学习(进阶篇3):对象传递
2011-03-21 10:03 1880前面几节都是讲一些理论知识,现在又用一个例子来说明一下,这一节 ... -
WebService CXF学习(进阶篇2):JAX-WS讲解
2011-03-21 10:00 1353JAX-WS规范是一组XML web services的 ... -
WebService CXF学习(进阶篇1):SOAP讲解
2011-03-21 09:49 1538SOAP 是基于 XML 的简易协 ... -
WebService CXF学习(入门篇3):WSDL描述
2011-03-21 09:42 1784由于网上有很多相关这 ... -
WebService CXF学习(入门篇2):HelloWorld
2011-03-21 09:37 2009理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloW ... -
WebService CXF学习(入门篇1):CXF由来
2011-03-21 09:35 1801WebService介绍 WebServi ...
相关推荐
做开发时,查了大量资料,发现一比较全面的资料,分享一下! WebService CXF学习——入门篇 1.CXF由来 ...整合Spring框架 2.CXF+Spring+Hibernate 3.WS-Security WebService CXF学习——JAXB剖析
通过CXF方式创建带用户认证的Webservice接口(含调用程序)与SSH框架完美整合。
JAVA的WebService支持V3.0.pdf JAVA6开发WebService WebService CXF学习:整合Spring框架
完整可用的spring整合CXF示例项目,包括服务发布端和调用端两个项目,包括CXF拦截器的实现的简单的授权校验
webservice客户端,框架为CXF,整合spring
基于spring4+mybatis技术搭建web服务,该服务以soap协议提供webservice接口。 webservice接口基于cxf框架实现。
SSM+cxf+log4j整合框架;springmvc+spring+mybatis整合开发,内部集成webservice技术,采用cxf框架进行实现,log4j进行日志记录
基础的webservice笔记,后面开始使用webservice的cxf+spring整合框架。教学视频太大放不来,需要可以向我要!
源码里面包含了了一个简单的插入功能,主要是为了测试mybatis是否连接上数据库的时候写的测试类,作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周...如题,基于maven项目的ssm框架和cxf框架的整合。
WebService CXF框架整合Spring的练习
这个实例会展示出以契约优先(或者可以说是WSDL优先)的方式开发CXF WebService服务,同时会整合spring框架,使用spring框架将服务发布到tomcat容器中,项目的构建会用Maven管理。
这是一个基于maven构建的java项目,整合了Apache CXF框架,实现restful风格的service
作为一个一年工作经验的人,我自己通过网上搜寻资料,利用CXF,通过Maven构建项目,成功把Spring、 mybaties、CXF整合起来,作为服务器端的接口,供别人调用。最后成功发布接口,经测试没有问题,希望大家共同学习,...
基于spring+serlvet+CXF+servlet异步实现等融合成的开发框架,可以实现多线程和异步并发操作,采用servlet3.0自带的异步实现方式,jdk1.6版本,javaee1.6
Maven+Spring+Spring MVC+MyBatis+MySQL整合SSM框架; 已集成activeMq;cxf webservice;邮件;
Springmvc框架搭配c3p0,cxf方式webservice简单model
Spring Boot 整合 Mybatis 实现RESTful API ,具体可以查看博客: http://blog.csdn.net/yaozhiqi1905658804/article/details/70820892
Springboot整合cxf测试项目亲测可用,精简版的boot承载cxf框架的资源!
WebService入门案例,使用CXF框架,与Spring进行整合,包括客户端工程和服务端工程。
集成Webservice平台,包括jaxws服务、CXF框架,配置双加密的权限认证。使服务集成更加安全。 9. Bootstrap html5提供了两套前台开环境,包括CMS和电子商务网站,使您的开发更加的简洁。 技术点: 1. Springmvc ...