读书人

Apache CXF高速上手教程

发布时间: 2013-03-26 09:54:34 作者: rapoo

Apache CXF快速上手教程

http://DefaultNamespace"><mapping name="sample:User"><property name="metaClass" ignore="true"/></mapping></mappings>2.客户端包含:Client和User.aegis.xml,User.aegis.xml的内容和服务端的一样。Client的内容如下:

 package client;import groovyx.net.ws.WSClientclass Client {static void main(args) {def proxy = new WSClient("http://localhost:9000/UserService?wsdl", Client.class.classLoader)def user= proxy.create("defaultnamespace.User");user.first="James"user.last="Bond"proxy.add(user)def result= proxy.findAllUsers()result.users.each{println it.first+"."+it.last}}}


相关建议

CXF 的功能特性非常多,要熟练使用它非得花些功夫才行。笔者在此给出一些建议,期望能对读
者在今后学习和使用CXF 的过程中有所帮助:

1.熟悉工具涉及领域的协议是个不错的主意。虽然CXF提供了简化服务创建的编程模型,但是如果不了解WS-*协议,在遇到问题调试时必然会花不少时间。尤其是在SOA的环境中,客户端和服务不一定是使用同一语言、同一工具实现的情况下,互操作问题经常是由于对协议的不同支持造成的;

2.作为CXF实现内容的一个重点,JAX-WS是值得关注的;

3.在Java的环境中,Spring几乎已经成为开发服务器端应用的首选,应重点关注CXF和Spring的配合使用;

4.近些年来,Java世界的动态语言旋风愈演愈烈。Groovy由于其语法和Java兼容且提供了不少方便的语法,吸引了不少Java开发者。更何况新兴的Grails框架逐渐引人注目,其前途不可限量。GroovyWS专为Groovy开发,且底层就是CXF,作为CXF的开发者,没有理由不去使用可以使自己生活过得舒适的工具;

5.CXF携带了大量的例程,它们是熟悉和了解CXF的大门的;

6.参与社区,参与讨论,往往比起自己单干要有用得多。

版本信息

在官方网站上,CXF 公布了其2.0.4 版和2.1版的开发计划。2.0.4 版于2008 年1 月15 日发布,2.1 版则是2 月28 日发布。2.0.4 版的计划主要是修正2.0.3 版的错误,以及工具迁移的问题。2.1 版则引入一些新特性,包括:

1.支持JAX-WS 2.1,包括JAXB 2.1、API中的WS-A、SEI接口方法的JAXB标注、WebServiceFeature标注;

2.XmlBeans、JiBX数据绑定;

3.新的java2ws工具;

4.更好地支持REST(JSR-311);

5.支持js;

6.OSGi bundling。

除了上述计划,有可能包含在2.1 版,但是肯定会在2.2 版的特性包括:

1.通过继承Yoko 的代码来支持CORBA;

2.更好地集成Acegi;

3.WS-SecureConversation/Trust;

4.其他WS-*协议。

社区视角

在Celtix 和XFire 宣布合并的同年,另一个著名开源Web 服务框架Axis 的后继者Axis2 也诞生了。Axis2并非Axis 的2.0 版,而是完全重写了Axis 的新项目。作为功能和背景都极其相似的两个项目,人们难免会将它们相提并论。在著名的Java企业开发站点TheServiceSide 上就有一篇名为“Axis, Axis2 and CXF: Survey theWSLandscape”(地址:http://www.theserverside.com/tt/articles/content/AxisAxis2andCXF/article.html)的文章对这两个项目进行了比较,主要内容如下。

1.在特性方面:

C X F 支持W S - A d d r e s s i n g 、W S-Policy、WS-RM、WS-Security和WS-IBasicProfile。Axis2支持除了WSPolicy之外的所有这些标准,WS-Policy预计会在未来版本中得到支持;

CXF可以方便地和Spring集成在一起,Axis2不行;

Axis2支持范围更广的数据绑定,包括XMLBeans、JiBX、JaxMe、JaxBRI,以及它自己的数据绑定ADB。在Axis21.2 版中,JaxME和JaxBRI尚处于试验阶段。目前,C X F只支持J A XB和Aegis,对XMLBeans、JiBX和Castor的支持将在CXF 2.1版中实现;

Axis2支持多语言,除了Java版本,尚有C/C++版本。

2.在开发方面:

Axis2更像一个微型服务器。Axis2被打包成一个WAR,可部署到任何Servlet容器中,为了更方便地在运行中管理和部署服务进行专门的设计。

CXF更专注于对开发人员友好及可嵌入性。大部分配置只需使用API即可完成,与Spring紧密集成。CXF强调代码优先的服务开发方式。

3.建议:如果需要多语言支持,那么就采用Axis2;如果考虑到使用Java、与Spring集成,或将服务嵌入到其他程序中,那么CXF更好。

当然,并不是所有人都说好。例如,在国内的一些论坛上,就有开发者抱怨CXF 的入门比起XFire来要复杂得多。这是可以理解的,毕竟CXF本身也比XFire 要复杂得多。为了帮助Celtix 和XFire的开发者向新工具的迁移,其官方网站也提供了相应的迁移指南。另外一个常见的问题是和Spring AOP相关的(如事务、安全),这在官方网站的FAQ 中也有说明。

1 楼 01404421 2010-06-02 请教兄台!
小弟我在项目当中要用到关联对象作为参数的传递,但是报错:
org.apache.cxf.interceptor.Fault: Marshalling Error: A cycle is detected in the object graph. This will cause infinitely deep XML: com.futuresoftware.system.pojo.Department@1d394ab -> com.futuresoftware.system.pojo.Department@11ef3e7 -> com.futuresoftware.system.pojo.Department@1d394ab

请问关联问题怎么解决?谢谢!

读书人网 >Apache

热点推荐