apachecxf研究.docx
- 文档编号:19075886
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:42
- 大小:450.52KB
apachecxf研究.docx
《apachecxf研究.docx》由会员分享,可在线阅读,更多相关《apachecxf研究.docx(42页珍藏版)》请在冰豆网上搜索。
apachecxf研究
ApacheCXF研究3
一、文档简介3
1.内容:
3
2.目标:
3
二、ApacheCXF服务框架的基本知识3
1.关于ApacheCXF3
2.功能特性3
3.下载及目录结构4
4.CXF框架支撑环境8
5.JDK版本选择、下载和安装8
6.Servlet容器下载和安装8
三、CXF服务的发布与消费8
1.配置环境变量(windows):
8
2.通过Ant来构建和运行示例9
3.体验改变10
4.构建和运行在Servlet容器里的示例11
四、ApacheCXF应用开发13
1.开发环境准备13
2.创建项目骨架13
3.接口类创建13
4.具体实现类14
5.Spring配置14
6.Web应用配置16
7.应用部署17
8.启动服务17
9.消费服务17
五、CXF解析19
1、体系结构20
2.Howservicecallsareprocessed21
3、对象组织关系及运作流程26
六、拦截器与Feature38
本地服务(私有服务)40
七、知识点:
41
八、参考资料41
ApacheCXF研究
一、文档简介
cxf版本:
2.x
1.内容:
1、ApacheCXF服务框架的基本知识
2、用自带的例子来初步体验通过CXF进行服务的发布与消费
3、搭建基于Eclipse的ApacheCXF开发环境
4、示例CXF整合Spring2.0的基本开发过程
5、CXF源码研究
2.目标:
掌握ApacheCXF的基本知识,可以用CXF编写基本的WebServices,并且能够增加自己的业务逻辑,从而开发满足自己需求的WebServices应用,最重要的是学会与Spring2.0框架的无缝整合,快速轻松地实现服务的发布与消费。
二、ApacheCXF服务框架的基本知识
1.关于ApacheCXF
ApacheCXF=Celtix+XFire,ApacheCXF的前身叫ApacheCeltiXfire,现在已经正式更名为ApacheCXF了,以下简称为CXF。
2.功能特性
1、支持WebServices标准:
CXF支持多种WebServices标准,包含SOAP、BasicProfile、WS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。
2、Frontends:
CXF支持多种“Frontend”编程模型,CXF实现了JAX-WSAPI(遵循JAX-WS2.0TCK版本),它也包含一个“simplefrontend”允许客户端和EndPoint的创建,而不需要Annotation注解。
CXF既支持WSDL优先开发,也支持从Java的代码优先开发模式。
3、容易使用:
CXF设计得更加直观与容易使用。
有大量简单的API用来快速地构建代码优先的Services,各种Maven的插件也使集成更加容易,支持JAX-WSAPI,支持Spring2.0更加简化的XML配置方式,等等。
4、支持二进制和遗留协议:
CXF的设计是一种可插拨的架构,既可以支持XML,也可以支持非XML的类型绑定,比如:
JSON和CORBA。
3.下载及目录结构
http:
//cxf.apache.org/download.html可下载二进制及源码发布包,使用只需二进制包:
1.bin(目录)
bin目录中是CXF框架中所提供的代码生成、校验、管理控制台工具:
JavatoWSDL:
java2wsdl
CXFManagementConsoleTool:
mc
WSDLtoJava:
wsdl2java
WSDLtoService:
wsdl2service
WSDLtoSOAP:
wsdl2soap
WSDLtoXML:
wsdl2xml
WSDLValidation:
wsdlvalidator
XSDtoWSDL:
xsd2wsdl
2.docs(目录)
CXF所有类(class)对应的API文档,为开发者使用CXF完成应用开发提供应有的帮助。
3.etc(目录)
包含一个基本的Service暴露所需要的web.xml文件,及其它的配置文件。
4.lib(目录)
lib目录中包含CXF及其运行时所需要的和可选的第三方支持类包(.jar文件),可以根据不同项目所需的CXF特性选择所需要的支持类包。
如果不想一一去区分的话,可以直接在Web项目中包含所有的CXF及其运行时所需要的第三方支持类包(.jar文件)即可。
其中cxf-2.0.2-incubator.jar是CXF框架的二进制包文件,包含了全部的模块(modules),cxf-manifest-incubator.jar是列表清单文件manifestjar。
以下的jar包是所有CXF项目所必需的:
cxf.jar
commons-logging.jar
geronimo-activation.jar(OrtheSunequivalent)
geronimo-annotation.jar(OrtheSunequivalent)
geronimo-javamail.jar(OrtheSunequivalent)
neethi.jar
jaxb-api.jar
jaxb-impl.jar
stax-api.jar
XmlSchema.jar
wstx-asl.jar
xml-resolver.jar
对于Java2WSDL和WSDL2Java,除了必需的之外,还需要再增加如下jar包:
jaxb-xjc.jar
veliocity.jar
velocity-dep.jar
为了支持JAX-WS,除了必需的之外,还需要再增加如下jar包:
jaxws-api.jar
saaj-api.jar
saaj-impl.jar
asm.jar(可选的,但是可以提升包装类型的性能)
为了支持XML配置,除了必需的之外,还需要再增加如下jar包:
aopalliance.jar
spring-beans.jar
spring-context.jar
spring-core.jar
spring.web.jar
为了独立的HTTP服务支持,除了必需的之外,还需要再增加如下jar包:
geronimo-servlet.jar
jetty.jar
jetty-sslengine.jar
jetty-util.jar
sl4j.jar&sl4j-jdk14.jar(可选的,但是可以提升日志logging)
为了支持Aegis,除了必需的之外,还需要再增加如下jar包:
jaxen.jar
jdom.jar
stax-utils.jar
为了支持WS-Security,除了必需的之外,还需要再增加如下jar包:
bcprov-jdk14.jar
wss4j.jar
xalan.jar
xmlsec.jar
为了支持HTTPBinding,除了必需的之外,还需要再增加如下jar包:
jra.jar
jettison.jar(仅为JSON服务所需的)
5.licenses(目录)
列表了引用第三方jar包的相关许可协议。
6.modules(目录)
modules目录中包含了CXF框架根据不同特性分开进行编译的二进制包文件。
发布基于CXF框架的Web项目时,可以选择使用该目录下的所有.jar文件,也可以选择lib目录中的cxf-2.0.2-incubator.jar文件。
7.samples(目录)
samples目录中包含了所有随CXF二进制包发布的示例,包含这些示例的源代码和相关Web应用配置文件,可以方便地用Ant来编译运行测试这些示例,来了解CXF的开发和使用的方法。
可以通过samples目录和它各个子目录下的README.txt的文件来详细了解示例的编译与运行的步骤。
8.LICENSE文件
包含了CXF框架的授权协议ApacheLicenseVersion2.0。
9.NOTICE文件
罗列了CXF框架用到的相关第三方组件的授权协议以其它的相关信息。
10.README文件
中包含了CXF框架本身的一些简要说明。
11.release_notes.txt文件
包含了CXF发布时的一些信息,包括运行时所需要的环境,修复BUG的列表等。
4.CXF框架支撑环境
CXF框架是一种基于Servlet技术的SOA应用开发框架,要正常运行基于CXF应用框架开发的企业应用,除了CXF框架本身之外,还需要JDK和Servlet容器的支持。
5.JDK版本选择、下载和安装
JDK最低的版本是需要选择JDK5或者以上版本,为了运行CXF携带的samples目录下的所有示例,还需要ApacheAnt1.6.5或以上的版本。
为了使用CXF的WS-Security特性,还需要BouncyCastle,并增加到CLASSPATH中。
6.Servlet容器下载和安装
CXF是一种基于Servlet技术的SOA应用开发框架,需要Servlet容器的支持。
CXF支持在多种Servlet容器中运行,包括WebSphere、WebLogic、Tomcat、Jetty等。
三、CXF服务的发布与消费
1.配置环境变量(windows):
将以下内容保存为env.bat
2.通过Ant来构建和运行示例
a)构建与启动Server
首先,进入到%CXF_HOME%/java_first_pojo/目录下。
在UNIX或Windows下的命令都是一样的,如下:
antserver
最后可以看到如下信息:
build:
server:
[java]Serverready...
如果看不到这些信息,请检查环境变量设置是否正确。
b)运行Client
再打开一个命令窗口,运行:
antclient
最后可以看到如下信息:
client:
[java]InvokesayHi()....
[java]Hellouser
BUILDSUCCESSFUL
如果看不到这些信息,问题应当是出现在环境变量的设置上,需要再次检查一下您的环境变量设置是否正确。
3.体验改变
a)修改Client端
打开%CXF_HOME%/samples/java_first_pojo/src/demo/hw/client目录下的Client.java文件,在最后面修改为:
System.out.println(client.sayHi("World,利用ApacheCXF实现WebServices"));可以改为其他你喜欢的字符串参数
b)修改Server端代码
Ctrl+C直接停止刚才启动的antserver启动端,然后打开%CXF_HOME%/samples/java_first_pojo/src/demo/hw/server目录下的HelloWorldImpl.java文件,修改
return"Hello"+text;
为
return"Hello"+text+newjava.util.Date();
我们在返回信息时增加了一个时间戳上去,然后再次分别运行antserver与antclient,看看有什么变化。
c)代码简单分析
实际上,我们会发现java_first_pojo的源代码非常简单,Server端主要利用org.apache.cxf.frontend.ServerFactoryBean来发布服务,实例化一个实现类HelloWorldImpl,设置将要进行发布的地址address,最后通过ServerFactoryBean的create()方法就成功地发布了WebServices,如此简单而已;
而客户端主要利用org.apache.cxf.frontend.ClientProxyFactoryBean来访问服务,,绑定到endPointAddress地址,就可以create并得到服务,并进行服务消费了。
ServerFactoryBeanClientProxyFactoryBean都属于下文提到的SimpleFrontend范畴
4.构建和运行在Servlet容器里的示例
a)构建Web应用程序包
停止掉前面运行的Server,然后在命令行运行:
antwar
将在%CXF_HOME%/samples/java_first_pojo/build/war/目录下生成helloworld.war文件。
b)部署应用
先运行如下命令,将运行部署到Tomcat容器中:
antdeploy-Dtomcat=true
c)启动Tomcat
然后在Windows下通过startup.bat或在Unix下通过startup.sh来启动Tomcat,CXF的应用也就随之启动。
通过Tomcat管理控制台http:
//localhost:
8080/manager/html/可以看到已经成功部署了helloworld.war的应用程序,如下图所示:
d)校验服务
假设您的Tomcat服务端口是8080,那运行以下命令就可以调用部署到JavaEE容器里的CXF所提供的WebServices的服务了。
http:
//localhost:
8080/helloworld/services/hello_world?
wsdl
查看wsdl文件的信息内容如下:
e)运行Client
接下来我们来运行Client来使用它,运行:
antclient-servlet
如果您的端口不是8080,可以使用:
antclient-servlet-Dbase.url=http:
//localhost:
端口号
或者
antclient-servlet-Dhost=localhost-Dport=端口号
来调用WebServices,返回结果如下:
client-servlet:
[java]InvokesayHi()....
[java]HelloWorld,利用ApacheCXF实现WebServicesThuSep2721:
56:
32CST2007
BUILDSUCCESSFUL
f)卸载应用
从Tomcat中卸载应用,运行:
antundeploy-Dtomcat=true
最后,停止Tomcat,然后清除构建过程中产生的一些文件,直接运行antclean即可。
四、ApacheCXF应用开发
1.开发环境准备
下载并安装Eclipse3.2(或更高版本)
2.创建项目骨架
a)创建web工程
取名CXF_Spring_Survey
b)导入支持包
直接拷贝%CXF_HOME%/lib目录下的所有.jar文件到CXF_Spring_Survey项目的WEB-INF/lib目录下,也可以根据前面“CXF安装包”章节所述的各个jar包的作用范围选择仅需要的.jar文件。
或者拷贝“构建和运行在Servlet容器里的示例”中生成的web应用程序的lib目录下的jar。
把这些jar添加到buildpath下。
3.接口类创建
在项目的src目录中新建一个ws.cxf包,并在里面创建接口类ISurveyService.java,为了简单示示例起见,我们仅创建一个方法publicStringvote(Stringusername,intpoint);这里要注意的是我们在接口上用@WebService注解标明这是一个即将暴露为WebService的接口,并将里面的方法都暴露出去。
完整的接口代码清单如下:
packagews.cxf;
importjavax.jws.WebService;
@WebService
publicinterfaceISurveyService{
/**
*@paramusername
*名字
*@parampoint
*分数
*@return
*/
publicStringvote(Stringusername,intpoint);
}
4.具体实现类
创建一个相应的实现类,并将其定义在sw.cxf.impl包中,完整的代码清单如下:
5.Spring配置
在src目录中创建beanRefServer.xml文件,用来定义Spring的Bean的配置,CXF支持Spring2.0Schema标签配置方式,并且提供快捷暴露WebServices的标签。
首先,我们需要引入Spring与CXF的命名空间(namespace),如下:
//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-2.0.xsd http: //cxf.apache.org/jaxws http: //cxf.apache.org/schemas/jaxws.xsd"> 这样,我们可以使用Spring与CXF的标签配置了。 接着,我们需要引入我们所需要的CXF的Bean定义文件,如下: --ImportApacheCXFBeanDefinition--> META-INF/cxf/cxf.xml"/> META-INF/cxf/cxf-extension-soap.xml"/> META-INF/cxf/cxf-servlet.xml"/> 接着定义我们具体实现的Bean,这个Bean的定义与Spring普通的Bean定义是一样的: --SurveyService--> 最后,将定义的Bean暴露出去成为WebService服务,通过CXF提供的Schema标签配置 server>,这样定义的配置显得更加简洁与方便,定义如下: --ExposeSurveyWebService--> serverid="surveyWebService" serviceClass="ws.cxf.ISurveyService" address="/SurveyWebService"> serviceBean> --要暴露的bean的引用--> serviceBean> server> 还有一种配置方式: 1 @WebService(endpointInterface="demo.spring.HelloWorld") publicclassHelloWorldImplimplementsHelloWorld{ 用标记指定接口 2、使用jaxws: endpoint标签 endpoint id="helloWorld" implementor="demo.spring.HelloWorldImpl" address="/HelloWorld"/> 或者 endpoint id="helloWorld" implementor="#helloWorldImpl"此处用#号引用一个bean address="/HelloWorld"/> 在配置中,serviceClass的值是我们的接口类的名称,address为将要暴露出去的WebService访问地址。 比如: /SurveyWebService,那么客户端消费WebService的地址就会成为http: //host: port/WebAPPName/SurveyWebService,与之相应的WSDL地址则为: http: //host: port/WebAPPName/SurveyWebService? wsdl。 6.Web应用配置 由于我们的示例是需要通过Servlet容器进行服务暴露,因此需要配置相对应的web.xml文件,首先是增加Spring的配置文件加载Listener,如下: --SpringConfigLocation-->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- apachecxf 研究
![提示](https://static.bdocx.com/images/bang_tan.gif)