利用cxf开发WebService

利用cxf开发WebService

1.什么是CXF

Apache CXF =Celtix + Xfire

支持多种协议:

?    SOAP1.1,1,2

?    XML/HTTP

?    CORBA(Common ObjectRequest Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。C,c++,C#)

?    并可以与Spring进行快速无缝的整合

?    灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面。

2.安装CXF的其他支持项目

Ant

Tomcat

并设置以下环境变量:

?    JAVA_HOME

?    CXF_HOME

?    ANT_HOME

?    CATALINA_HOME

?    Path =%JAVA_HOME%\bin;%CXF_HOME%\bin;%CATALINA_HOME%\bin;%ANT_HOME%\bin

?    CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes

注意:

1、为什么要用到ant这个工具呢?Ant做为一种工具已经广泛被使用,并且历史悠久。使用ant的内置命令,可以编译java源文件(javac),运行java文件(java),给class文件打包(jar、war、ear),也可以创建(mkdir)、删除(del)、拷贝(copy),甚至可以使用ant执行sql文件。由于ant是用xml语言写成的文件,并取默认名为build.xml文件。所以,今后大家应该在见到名为build.xml文件时知道这是一个ant的文件。

2、默认在Eclipse和MyEclipse的对ant有内建的支持。可以在MyEclipse中任意项目中建立一个文件叫build.xml文件,你会发现它有不同的图标(上面有个小蚂蚁)。

3. 用ANT来构造第一个CXF示例

在cxf_home\samples\java_first_pojo目录下启动服务器:

?    在命令行模式下进入上述目录:

?    执行 以下命令 ant server

在同一目录下打开新命令行窗口运行:

?    ant client

注意:

1、java_frist_pojo是位于samples下的最简单的一个项目。

2、ant server,是通过ant来执行build.xml配置文件中的一段代码,就的工作就是编译Java类并启动服务。

3、ant client是访问服务。

4、让我们一块来看一下它的源代码。由三个类组成:接口HelloWorld,实现类HelloWorldImpl和服务发布类Server

在另一端则只有一个Client.java文件。

执行ant 是重新编译。

Ant server是启动服务。

Ant client是运行客户端。

Ant deploy –Dtomcat=true

4. 用ANT将它发布到Tomcat服务器上

1、执行ant clean清除以前生成的代码

2、执行ant war打包此应用。

3、执行ant deploy –Dtomcat=true将项目发布到tomcat的服务器上。

4、启动tomcat服务器

5、打开IE的地址栏输入:

http://localhost:9999/helloworld/services/hello_world?wsdl

或:http://localhost:9999/helloworld/services

6、在命令行执行:

?    ant client-servlet –Dbase.url=http://localhost:9999

?    或在MyEclipse的WebServiceExplorer中访问这个WebService

7、停止tomcat服务器。

8、卸载应用:ant undeploy –Dtomcat=true

9、清空项目:ant clean

5. 在Eclipse中开发CXF的JavaSE应用

导入CXF中的 所有jar文件。可以通过WACH_JARS来观察各jar文件的用途。

注意:

1、记得调整你的jdk版本为jdk1.6.0_24.

2、将所有cxf的jar包拷贝到项目中来。添加到classpth中。

3、在开发之前可以先阅读CXF_HOME\lib\WATCH_JARS文件,分析jar文件之间的依赖关系

6.CXF发布服务的类

用两个不同的类发布应用:

ServerFactoryBean   -- FacotryBean

JaxWsServerFactoryBean(建议使用此类)

7.服务与客户端类调用原则图解

8.使用ServerFactoryBean发布服务

使用ServerFactoryBean发布服务。

使用CXF发布一个服务,与JDK6发布一个服务完全不同

?    * 即使是不使用@WebService注解,一样可以发布成功

?    * 即使此类没有对外公布的方法一样可以发布成功

9.使用ClientProxyFactoryBean客户端调用

使用ServerFactoryBean发布服务以后,在没有接口的情况下,可以使用wsimport生成的客户端代码调用成功。

但如果要使用ClientProxyFactoryBean客户端去调用服务器,则必须要先在服务器端创建一个接口。(一直以来,Spring都要求面向接口编程,而cxf与Spring能很好的整合,也就在此。),所以,必须要重写服务器端的代码。这将导致刚才使用wsimport生成的调用代码失效。

同时,ClientProxyFactoryBean由于要用到CXF环境,所以要导入CXF的所有包。

同时,如果是在本项目中调用,则可以直接使用本项目的接口。

如果在其他项目中调用,仍然需wsimport生成的类,但只需要一个接口。

10.使用JaxWsServerFactoryBean发布服务: (建议使用此类)

JaxWsServerFactoryBean是ServerFactoryBean的子类,也是功能扩展类。

但在CXF的API文档中没有提供此类API,请通过查看源代码的方式获取此类的帮助。

此类,必须要在被发布为服务的类上添加@WebService注解,如果不加注解,虽然不出错,但也不会对外暴露任何方法。

使用此类生成的wsdl文件更加规范。

11.使用CXF的类发布一个服务

创建成功以后,使用Wsimport生成的客户端代码,同样可以调用成功

在使用CXF发布服务时,需要首先写一个接口,用以声明服务类型。这有点类似于Spring中的服务层的实现

12.使用JaxWsProxyFactoryBean客户端调用

此调用过程与ClientProxyFactoryBean的要求一样,也必须要拥有一个接口。

此时,仍然可以使用wsimport生成接口,在其他项目的调用。

在另一个项目中调用:

13.wsdl2java生成客户代码

在cxf中,也提供了一个用于生成客户端调用代码的工具。它的功能就如同wsimport一样。

此工具位于cxf_home/bin目录下。参数与wsimport有所不同。

它包含以下参数:

?    -d参数,指定代码生成的目录。

?    -p参数,指定生成的新的包结构。

需要说明的是,由于wsdl2java是根据jdk1.7生成的本地代码,所以,需要对生成的代码做一点点修改。

在命令行执行:

wsdl2java –d .http://127.0.0.1:6666/helloworld?wsdl

调用端代码:

14.给服务添加消息拦截器

LoggingInInterceptor– 信息输入时的拦截器 –请求

LoggingOutInterceptor–信息输出时的拦截器-响应

给服务器添加拦截器,类似于使用TCP/IP Monitor来捕获SOAP消息的过程。

15.使用JavaScript也可以访问WebServie

jQuery访问WebService.

?    1、在本域准备jquery.js(由于jquery对跨域的请求做了限制,所以jquery仅限于在本域中使用。但为了快速解析XML文件,仍然可以使用jquery当成解析xml文件的工具。)。

?    2、通过js发起ajax请求。

时间: 2024-10-25 03:52:45

利用cxf开发WebService的相关文章

WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作.下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring + Hibernate; 1.首先集成Apacha CXF WebService 到 Spring 框架中; apache

利用CXF开发WebService的小案例

http://www.blogjava.net/ashutc/archive/2009/11/24/303521.html 开发工具:MyEclipse 6.0 开发环境: 1.     jdk1.5 2.     CXF框架,版本apache-cxf-2.2.3.zip,到http://cxf.apache.org/download.html下载 注:如使用jdk1.6进行开发,需下载jaxb-api.jar和jaxws-api.jar,然后在本机安装JDK的地方,在jdk1.6.0的jre文

[转] WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

以下文章来自   http://www.blogjava.net/jacally/articles/186655.html 现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作.下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring

webservice 之 使用cxf开发WebService服务器端接口

摘要:webservice 不是一种新技术,它是一种跨平台,跨语言的规范,用于不同平台,不同语言开发应用之间的交互. cxf:是java主流的WebService实现框架. 接下来开始 使用cxf开发WebService服务器端接口 1.新建一个maven项目: 2. 项目用jdk1.7(因为1.7有webservice的默认实现)项目结构如: 3. 首先新建接口,HelloWorld.java: package com.wh.webservice; import javax.jws.WebSe

使用cxf开发webservice接口

项目中经常用到开发webservice接口,及调用webService接口.这里讲解如何使用cxf开发webService接口. 一.webservice介绍及理解 webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互.        比如,平台平台淘宝.京东想获取其他快递公司数据接口,需快递公司开放数据接口.       那么 webservice就是出于以上类似需求而定义出来的规范:无需关心对方什么平台上开发以及使用何种语言开发.       只关心调用

使用CXF开发WebService客户端

前面一讲开发了webservice服务器端接口,今天的话,我们来开发webservice客户端,让大家来体验下过程: 首先建一个Maven项目,项目名字,WS_Client: 然后我们要用CXF给我们提供的工具wsdl2java 来根据请求的url生成客户端代码: wsdl2java工具在CXF开发包里: 开发下载地址:http://cxf.apache.org/download.html 下载二进制包,然后解压到D盘 这里我们看到了wsdl2java命令:当然要用的话,还得配置Path.我们打

IIdea使用CXF开发WebService

写这篇文章主要是用于增强记忆,而我参考的是这位朋友的随笔,链接如下 http://www.xiaomager.com/415.html 服务端开发过程 1.首先创建一个maven项目,如下图 2.添加项目的依赖包以及设置相关配置 提示:首先介绍一下基础环境 ,开发编译器 intellij idea ,我们的jdk是1.7,tomcat是7,spring使用的是spring4,cxf准备使用3.1.4,这里特别需要说明的是,cxf 3.0以后的版本只能在jdk1.7上使用,如果在1.6使用的话,会

在web项目中使用cxf开发webservice,包含spring支持

本文主要介绍了,如何使用cxf内置的例子,学会开发webserivce,在web项目中使用,且包含spring支持. webserivce的开发可以使用cxf或者axis,好像还有httpclient等等.以前也多次研究过,上网搜过很多别人的例子来看,写过代码下来,但没有总结过,少废话,上干货. 1. 到cxf的官网下载jar包.我用的是以前下载下来的apache-cxf-2.7.6.zip,并非最新版本.下载完成后,解压后,目录结构如下左图: 打开其中的samples文件夹,其内包含了很多例子

CXF 开发 WebService

什么是CXF: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 XML/HTTP CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS.                    C,c++,C#) 并可以与Spring进行快速无缝的整合 灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面. 安装CXF的其他支持项目: An