设为首页 收藏本站
查看: 719|回复: 0

[经验分享] 使用 Apache CXF 建立 WebService 总结

[复制链接]

尚未签到

发表于 2017-1-4 11:33:33 | 显示全部楼层 |阅读模式
  转载请注明出处:http://blog.csdn.net/oathevil/article/details/7520732
  

  J2EE中WebService的建立可以使用Axis2,也可以使用Apache CXF,两者的区别与优缺点具体见附档1
  最近花了点时间大概看了一下WebService相关的资料,现就Apache CXF的使用过程作如下总结:
  使用者可以遵循以下步骤进行WebService工程的建立。
  1. 下载 Apache CXF ,可以去官方下载 http://cxf.apache.org/ (本文使用的是2.3.9的版本)。
  2. 配置Apache CXF相关环境变量:
  a. 创建一个CXF_HOEM变量,值为CXF框架所在根目录(如本文为E:\Java\apache-cxf-2.3.9);
  b. 向CLASSPATH、PATH加入环境变量。具体:CLASSPATH=%CXF_HOME%\lib; PATH=%CXF_HOME%\bin;
  测试环境变量是否设置成功可在CMD中输入java2ws、wsdl2java等测试命令是否有效。
  3. 在Eclipse -> Window -> Preferences -> Web Services -> CXF 2.x Preferences -> CXF Runtime 中另入CFX Rutime库(Add -> 选择CXF的根目录即可)。
  4. 通过以上配置后,即可在Eclipse中 File -> New -> Other -> Web Services -> Web Service 中创建Web Service 服务。或者也可通过 Right Click 相应的接口文件,Web Services -> Create Web Service来创建,如图:
DSC0000.jpg



  之后再选择Implementation文件,其余基本使用默认配置即可。
  这样以后即可生成相应的ResponseWrapper、RequestWrapper、.wsdl文件和.xsd文件。
  注意:
  1.只有当配置档Web.xml、beans.xml、applicationContent.xml等正确配置时,才会生成成功。上述文档配置可参见附档2
  2.当包含WebService的项目WAR被部署之后,则相应的WebService也自动发布,无需进行额外发布。
  

  Apache CXF 结合 Spring 使用的例子将后续附上。
  附档1
  正好现在在学webService.可以共同进步啊
Web Services 框架如 Axis2、CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由 Axis 1.x 系列演化过来,而 Apache CXF 则是由 Celtix 和 XFire 项目整合而生,并且刚刚发布了 2.0.2 的最新版本,不过仍是 Apache 的一个孵化项目。
Axis2 是对 Axis 进行了彻底的重写的一个新项目了,它使用了新的模块化架构,更方便于功能性的扩展等等。
Apache CXF 则是由 XFire 和 Celtix 两个现有的项目进行了重组。
先比较一下它们的不同之处:
1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile
2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持
3、Apache CXF 是根据Spring哲学来进行编写的,即可以无缝地与Spring进行整合
4、Axis2 不是
5、Axis2 支持更多的 data bindings,包括 XMLBeans、JiBX、JaxMe 和 JaxBRI,以及它原生的 data binding(ADB)。
6、Apache CXF 目前仅支持 JAXB 和 Aegis,并且默认是 JAXB 2.0,与 XFire 默认是支持 Aegis 不同,XMLBeans、JiBX 和 Castor 将在 CXF 2.1 版本中得到支持,目前版本是 2.0.2
7、Axis2 支持多种语言,它有 C/C++ 版本。
8、Apache CXF 提供方便的Spring整合方法,可以通过注解、Spring标签式配置来暴露Web Services和消费Web Services
如何抉择:
1、如果应用程序需要多语言的支持,Axis2 应当是首选了;
2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说;
3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比如 Axis1,XFire,Celtrix 或 BEA 等等厂家自己的 Web Services 实现,就别劳民伤财了

因为CXF可以和Spring无缝的进行结合,而我的项目用到了spring ,所以我选的是CXF
  附档2
1.CXF本身就使用了Spring的东西,它和Spring集成可谓是无缝集成

主要让发布服务的任务交spring去发布


2.配置web.xml

配置spring


Xml代码


  • <context-param>
  • <param-name>contextConfigLocation</param-name>
  • <param-value>WEB-INF/beans.xml</param-value>
  • </context-param>

  • <listener>
  • <listener-class>
  • org.springframework.web.context.ContextLoaderListener
  • </listener-class>
  • </listener>



配置我们的cxf


Xml代码


  • <!-- 配置CXF Servlet -->
  • <servlet>
  • <servlet-name>CXFServlet</servlet-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>


3.beans.xml


Xml代码


  • <?xmlversion="1.0"encoding="UTF-8"?>
  • <!-- START SNIPPET: beans -->
  • <beansxmlns="http://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.xsd
  • http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">


  • <!--会向cxf jar包去找 -->
  • <importresource="classpath:META-INF/cxf/cxf.xml"/>
  • <importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
  • <importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>

  • <!--
  • <jaxws:endpoint
  • id="helloWorld"
  • implementor="com.cxf.server.HelloWorldImpl"
  • address="/HelloWorld"/>
  • -->

  • <!-- 另一种发布方式 -->
  • <beanid="hello"class="com.cxf.server.HelloWorldImpl"/>
  • <jaxws:endpointid="helloWorld"
  • implementor="#hello"
  • address="/HelloWorld">

  • </jaxws:endpoint>

  • <beanid="us"class="com.cxf.users.UserServiceImpl"></bean>

  • <jaxws:endpointid="userService"
  • implementor="#us"
  • address="/userAction"
  • >
  • <jaxws:inInterceptors>
  • <beanclass="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
  • </jaxws:inInterceptors>

  • <jaxws:outInterceptors>
  • <beanclass="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
  • </jaxws:outInterceptors>
  • </jaxws:endpoint>

  • </beans>
  • <!-- END SNIPPET: beans -->


<jaxws:endpoint 通过他们进行服务发布,通过其指定的address访问你的wsdl


Xml代码


  • <jaxws:inInterceptors>
  • <beanclass="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
  • </jaxws:inInterceptors>

可以加入相关interceptor



By M

2012-04-28

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-323817-1-1.html 上篇帖子: 配置apache服务器的用户认证 下篇帖子: 利用apache的proxy-ajp做apache与tomcat的结合(转载) jackey
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表