• Spring 3 整合Apache CXF WebService


    在CXF2版本中,整合Spring3发布CXF WebService就更加简单了。因为Spring 3提供了annotation注解,而CXF2发布WebService已经不像之前版本的配置那样(参考老版本发布WebService系列文章:http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html),现在发布一个WebService可以直接从Spring的IoC容器中拿到一个对象,发布成WebService服务。当然发布WebService的配置有了些小小的变动,具体请往下看。

    在老版本中发布一个WebService,配置applicationContext-server.xml文件中添加如下配置如下:

    jaxws:server的发布方式

    <bean id="userServiceBean" class="com.hoo.service.ComplexUserService"/>
     
    <bean id="inMessageInterceptor" class="com.hoo.interceptor.MessageInterceptor">
        <constructor-arg  value="receive"/>
    </bean>
     
    <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
    <!-- 注意下面的address,这里的address的名称就是访问的WebService的name -->
    <jaxws:server id="userService" serviceClass="com.hoo.service.IComplexUserService" address="/Users">
        <jaxws:serviceBean>
            <!-- 要暴露的 bean 的引用 -->
            <ref bean="userServiceBean"/>
        </jaxws:serviceBean>
        <jaxws:inInterceptors>
            <ref bean="inMessageInterceptor"/>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
            <ref bean="outLoggingInterceptor"/>
        </jaxws:outInterceptors>
    </jaxws:server>

    jaxws:endpoint的发布方式

    <!-- com.hoo.service.ComplexUserService是com.hoo.service.IComplexUserService接口的实现, 这种方法应该不能从Ioc中引用对象 -->
    <jaxws:endpoint id="userService2" implementor="com.hoo.service.ComplexUserService" address="/Users">
        <jaxws:inInterceptors>
            <ref bean="inMessageInterceptor"/>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
            <ref bean="outLoggingInterceptor"/>
        </jaxws:outInterceptors>
    </jaxws:endpoint>

    而在2.x新版本中,发布Ioc容器中的对象为一个WebService的方法

    <bean id="userServiceBean" class="com.hoo.service.ComplexUserService"/>
     
    <bean id="inMessageInterceptor" class="com.hoo.interceptor.MessageInterceptor">
        <constructor-arg  value="receive"/>
    </bean>
     
    <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
    <!-- 注意下面的address,这里的address的名称就是访问的WebService的name;#userServiceBean是直接引用Ioc容器中的Bean对象 -->
    <jaxws:server id="userService" serviceBean="#userServiceBean" address="/Users">
        <jaxws:inInterceptors>
            <ref bean="inMessageInterceptor"/>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
            <ref bean="outLoggingInterceptor"/>
        </jaxws:outInterceptors>
    </jaxws:server>
    <!-- 或者这种方式,在老版本中这个是不能引用Ioc容器中的对象,但在2.x中可以直接用#id或#name的方式发布服务 -->
    <jaxws:endpoint id="userService2" implementor="#userServiceBean" address="/Users">
        <jaxws:inInterceptors>
            <ref bean="inMessageInterceptor"/>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
            <ref bean="outLoggingInterceptor"/>
        </jaxws:outInterceptors>
    </jaxws:endpoint>

    CXF发布WebService官方参考:http://cxf.apache.org/docs/writing-a-service-with-spring.html

  • 作者:hoojo
    出处:
    blog:http://blog.csdn.net/IBM_hoojo
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权所有,转载请注明出处 本文出自:
分享道版权所有,欢迎转载,转载请注明出处,谢谢
收藏
关注
评论
  • 相关阅读:
    iOS10权限声明国际化
    用"僵尸对象"调试内存管理问题
    windows系统下的两个批处理命令
    解决windows系统下打开应用弹出丢失libmysql.dll的问题
    简单的cocos2dx笔试题
    解决cocos2dx 3.x 导入cocostudio的ui界面出现错位问题
    mac 使用homebrew 安装mysql
    cocos2dx for lua 简单的翻牌动画
    cocos2dx for lua A*寻路算法实现2
    解决升级mac os X EI Capitan后遇到LibclangError: dlopen(libclang.dylib, 6): image not found.的问题
  • 原文地址:https://www.cnblogs.com/hoojo/p/2590593.html
  • Copyright © 2020-2023  润新知