播客2012年9月日javaee物联云计算方向就业班培训webservice源码笔记cxf_第1页
播客2012年9月日javaee物联云计算方向就业班培训webservice源码笔记cxf_第2页
播客2012年9月日javaee物联云计算方向就业班培训webservice源码笔记cxf_第3页
播客2012年9月日javaee物联云计算方向就业班培训webservice源码笔记cxf_第4页
播客2012年9月日javaee物联云计算方向就业班培训webservice源码笔记cxf_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京传智播客教育 WebService-CXF赵庆轩北京传智播客教育 什么是CXFApache CXF = Celtix + Xfire支持多种协议:SOAP1.1,1,2XML/HTTPCORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。C,c+,C#) 并可以与Spring进行快速无缝的整合灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面。北京传智播客教育 什么是CXF:北京传智播客教育 CXF的安装及配置北京传智播客教育 CXF的结构:北京传智播客教育 下

2、载完成后将其解压到某个目录下:北京传智播客教育 安装CXF的其他支持项目:AntTomcat并设置以下环境变量:JAVA_HOME CXF_HOMEANT_HOMECATALINA_HOMEPath = %JAVA_HOME%bin;%CXF_HOME%bin;%CATALINA_HOME%bin;%ANT_HOME%binCLASSPATH=.;%CXF_HOME%libcxf-manifest.jar;.buildclasses北京传智播客教育 用ANT来构造第一个CXF示例:在cxf_homesamplesjava_first_pojo目录下启动服务器:在命令行模式下进入上述目录:执行

3、以下命令 ant server在同一目录下打开新命令行窗口运行:ant client上面的代码,其实就是通过ant工具对源代码进行编译和运行。如果能编译通过,将会显示build success.北京传智播客教育 查看它的源代码并修改运行:北京传智播客教育 用ANT将它发布到Tomcat服务器上:1、执行ant clean清除以前生成的代码2、执行ant war打包此应用。3、执行ant deploy Dtomcat=true将项目发布到tomcat的服务器上。4、启动tomcat服务器5、打开IE的地址栏输入: 或: 6、在命令行执行:ant client-servlet Dbase.url=

4、 或在MyEclipse的WebServiceExplorer中访问这个WebService7、停止tomcat服务器。8、卸载应用:ant undeploy Dtomcat=true9、清空项目:ant clean北京传智播客教育 在Eclipse中开发CXF的JavaSE应用:导入CXF中的 所有jar文件。可以通过WACH_JARS来观察各jar文件的用途。建立好之后的项目如 右图所示:北京传智播客教育 CXF发布服务的类:用两个不同的类发布应用:ServerFactoryBean - FacotryBeanJaxWsServerFactoryBean(建议使用此类)北京传智播客教育 服

5、务与客户端类调用原则:ServerFactoryBeanJaxWsServerFactoryBeanClientProxyFactoryBean JaxWsProxyFactoryBean服务发布类客户端调用类北京传智播客教育 使用ServerFactoryBean发布服务:使用ServerFactoryBean发布服务。使用CXF发布一个服务,与JDK6发布一个服务完全不同* 即使是不使用WebService注解,一样可以发布成功* 即使此类没有对外公布的方法一样可以发布成功使用CXF发布完此服务后,使用wsimport生成客户端一样可以调用成功。北京传智播客教育 使用ClientProxy

6、FactoryBean客户端调用:使用ServerFactoryBean发布服务以后,在没有接口的情况下,可以使用wsimport生成的客户端代码调用成功。但如果要使用ClientProxyFactoryBean客户端去调用服务器,则必须要先在服务器端创建一个接口。(一直以来,Spring都要求面向接口编程,而cxf与Spring能很好的整合,也就在此。),所以,必须要重写服务器端的代码。这将导致刚才使用wsimport生成的调用代码失效。同时, ClientProxyFactoryBean由于要用到CXF环境,所以要导入CXF的所有包。同时,如果是在本项目中调用,则可以直接使用本项目的接口。

7、如果在其他项目中调用,仍然需wsimport生成的类,但只需要一个接口。在同一个项目中调用:在不同项目中调用:北京传智播客教育 使用JaxWsServerFactoryBean发布服务: (建议使用此类)JaxWsServerFactoryBean是ServerFactoryBean的子类,也是功能扩展类。但在CXF的API文档中没有提供此类API,请通过查看源代码的方式获取此类的帮助。此类,必须要在被发布为服务的类上添加WebService注解,如果不加注解,虽然不出错,但也不会对外暴露任何方法。 使用此类生成的wsdl文件更加规范。以下是从它的源代码中找到的对此类的说明。北京传智播客教育

8、使用CXF的类发布一个服务:在服务启动成功后,访问的方式为: 创建成功以后,使用Wsimport生成的客户端代码,同样可以调用成功(此类问题以后不再赘述)。wsdl2java北京传智播客教育 使用JaxWsProxyFactoryBean客户端调用此调用过程与ClientProxyFactoryBean的要求一样,也必须要拥有一个接口。此时,仍然可以使用wsimport生成接口,在其他项目的调用。在另一个项目中调用:北京传智播客教育 规范的做法应该是先书写一个接口,如下:如果不是使用spring的配置文件发布,可以没有接口文件,但在任何情况下建议拥有接口文件。如果使用spring的配置文件发布

9、,则必须要拥有接口类。北京传智播客教育 wsdl2java生成客户代码:在cxf中,也提供了一个用于生成客户端调用代码的工具。它的功能就如同wsimport一样。先让我们了解一下cxf的wsdl2java工具,可以生成一堆客户端调用的代码。此工具位于cxf_home/bin目录下。参数与wsimport有所不同。它包含以下参数:d参数,指定代码生成的目录。p参数,指定生成的新的包结构。需要说明的是,由于wsdl2java是根据jdk1.7生成的本地代码,所以,需要对生成的代码做一点点修改。在命令行执行:wsdl2java d . 北京传智播客教育 调用端代码:北京传智播客教育 给服务添加消息拦

10、截器:这个非常有用:LoggingInInterceptor 信息输入时的拦截器 请求LoggingOutInterceptor 信息输出时的拦截器-响应server.getInInterceptors().add(new LoggingInInterceptor();server.getOutInterceptors().add(new LoggingOutInterceptor();给服务器添加拦截器,类似于使用TCP/IP Monitor来捕获SOAP消息的过程。北京传智播客教育 使用JavaScript也可以访问WebServie:jQuery访问WebService.1、在本域准备j

11、query.js (由于jquery对跨域的请求做了限制,所以jquery仅限于在本域中使用。但为了快速解析XML文件,仍然可以使用jquery当成解析xml文件的工具。)。2、通过js发起ajax请求。北京传智播客教育 总结:如何通过ant发布第一个cxf应用。手工建立一个java项目发布cxf的ws.Java项目和js访问webService加入消息拦截器将服务端改为SOAP1.2实现SOAP1.1与1.2北京传智播客教育 WebService-CXF-Spring基于web的cxf赵庆轩北京传智播客教育 开发cxf的web项目:由于cxf的web项目已经集成了Spring所以,cxf的服

12、务类都是在spring的配置文件中完成的。以下是步骤:第一步:建立一个web项目。第二步:准备所有jar包。将cxf_homelib项目下的所有jar包全部copy到新项目的lib目录下,里面已经包含了spring3.0的jar包。第三步:在web.xml中配置cxf的核心servlet,CXFServlet。第四步:创建(最好是Copy)cxf-servlet.xml文件。这是一个spring的配置文件。北京传智播客教育 web.xml的配置如下:1、配置cxf的核心Servlet2、默认即读取此配置文件,配置或是不配置都可以。3、配置所以ws访问的路径北京传智播客教育 Cxf-servle

13、t.xml文件说明:Cxf-servlet.xml文件,就是一个spring的配置文件。一个空的配置文件如下。上面导入的三个配置文件都在cxf.jar的META文件夹中北京传智播客教育 在地址栏访问: 配置好空项目后,可以先测试是否可以启动成功: 如果有WebService的存在,则会显示出来,如果没有,则会显示上而的信息。北京传智播客教育 配置发布第一个ws : (jaxb)北京传智播客教育 发布带有接口的配置: (jax-ws)必须要在声明为serviceClass的接口上声明WebSerive注解因为,要使用了接口,在接口上添加的注解才会有效。这是作用在接口的上的注解北京传智播客教育 配

14、置说明:CXFServlet类,通过读取config-location的配置项读取cxf-servlet.xml配置文件。并在内部读取自己的配置文件cxf.xml文件。在CXFServlet读取配置文件后,将文件信息全部读取到ApplicationContext的Spring类中。以下是它的源代码:北京传智播客教育 通过配置给服务添加消息拦截器:LoggingInInterceptorLogginOutInterceptor 北京传智播客教育 在地址栏访问: 北京传智播客教育 Java项目代码调用服务:使用纯Java项目调用1、根据客户端生成的代码来调用。(优选这种方式)请先生成然后在任意的J

15、ava项目中调用 。2、客户端只拥有一个接口,使用JaxWsProxyFactoryBean来调用。因为以下使用了JaxWsProxyFactoryBean,所以,仍然需要CXF的环境,而使用此环境就会造成Jar文件的大量冗余,所以大家要谨慎选择。北京传智播客教育 在Spring项目中,通过配置文件调用:以下是使用Spring的配置文件调用:新建立一个Java项目,并加载cxf的所有包。只需要生成的接口文件。在classpath下新建立一个ClientBeans.xml文件.优点与缺点:此种情况,适合于一个Javaweb项目已经集成了Spring。并希望通过CXF配置的方式调用Web服务。此种

16、情况,仍然需要导入CXF的大量jar包。这种情况也存在一定人优点,如可以将外部的Web服务通过配置文件注入(DI)到Action类中。北京传智播客教育 建立好以后Java项目如下图北京传智播客教育 ClientBeans.xml文件的内容:以下是调用代码:北京传智播客教育 关于web项目配置的说明1:如果在项目中仅发布webservice,则可以只配置以下内容。同时默认即是读取WEB-INF/cxf-servlet.xml文件,所以是否指定都可以。北京传智播客教育 关于web项目配置的说明2:但一般情况下,一个web项目,在使用了Spring之后,往往会通过ApplicationContext

17、获取一些服务,此时则必须注册Spring的监听器。即以下代码:见备注处,是一个完整的web.xml的配置。北京传智播客教育 关于web项目配置的说明3:在上页中出现的重复引入问题,可以修改cxf-servlet.xml文件。修改后,CXFServlet类将不能自动加载cxf-servlet.xml文件,此时将导致名为cxf的bean加载不成功。为解决此问题必须在重新命名的配置文件中加入以下代码,以启动CXF:即:如果你是用contextConfigLocation加载的配置文件,则必须要加入以下代码。北京传智播客教育 关于web项目配置的说明4:在增加了Spring的监听器之后,即可以使用以下

18、代码在Servlet中获取Spring的配置 :北京传智播客教育 通过JS来调用WebService:通过jQuery的ajax方法向服务器发送xml数据。必须要先了解xml的数据格式,通过拦截器获取。可以从LoggingInInterceptor中获取发出的数据格式。可以从LoggingOutInterceptor中获取返回的数据。导入jQuery1.5.js文件,放到js/jquery1.5.js北京传智播客教育 通过Ajax访问WebService使用jQuery本域$.ajax(url:.type:post,dataType:xml,contentType:application/soap+xml;charset

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论