<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 122,  comments - 25,  trackbacks - 0

    前段時(shí)間,項(xiàng)目中使用了XFire開(kāi)發(fā)Webservice,現(xiàn)將開(kāi)發(fā)過(guò)程小結(jié)一下,以備后查。

    一、配置web.xml,在Web應(yīng)用中增加X(jué)Fire的入口

    注意XFire已有了自己的Servlet,不再依賴(lài)Spring MVC的DispatchServlet,也就遠(yuǎn)離了大家不熟悉的Spring MVC URL Mapping,與Spring達(dá)致完美的整合。
    這里指定了路徑為/service/* ,即WebService的URL會(huì)被默認(rèn)生成為http://localhsot:8080/test/service/ServiceName,其中ServiceName默認(rèn)為下面的接口名。

        <servlet> 
            
    <servlet-name>xfire</servlet-name>  
            
    <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class> 
        
    </servlet>

        
    <servlet-mapping>
            
    <servlet-name>xfire</servlet-name> 
            
    <url-pattern>/service/*</url-pattern>
        
    </servlet-mapping>

    二、集成Spring

    在spring能找到的config目錄下,新建applicationContext-xfire.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
    <beans default-autowire="byName" default-lazy-init="true">
        
    <!-- 傳統(tǒng)方式下XFire-Spring導(dǎo)出POJO為Web服務(wù)的配置文件-->

        
    <!--引入XFire的預(yù)配置文件-->
        
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>

        
    <!--XFire WebService 基類(lèi)-->
        
    <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false"
              abstract
    ="true">
            
    <property name="serviceFactory" ref="xfire.serviceFactory"/>
            
    <property name="xfire" ref="xfire"/>
        
    </bean>

        
    <!-- 定義被導(dǎo)出的Web Service -->
        
    <bean id="userService" parent="baseWebService">
            
    <property name="serviceBean" ref="userServiceImpl"/>
            
    <property name="serviceClass" value="com.test.services.UserService"/>
        
    </bean>
    </beans>

    定義說(shuō)明:parent為前面定義的基類(lèi),serviceClass 為Web Service的接口,serviceBean為Web Service的接口實(shí)現(xiàn)類(lèi)。


    當(dāng)然,在spring配置文件中定義userServiceImpl是必不可少的,如在serviceContext.xml中定義如下:

    <bean id="userServiceImpl" class="com.test.services.UserServiceImpl"/>

    若不集成Spring,則需要定義一個(gè)services.xml文件,存放在/src/META-INF/services.xml

     <beans  xmlns="http://xfire.codehaus.org/config/1.0">  
       
    <service >  
         
    <name>userService</name>  
         
    <namespace>http://localhost:8080/service/userService</namespace>  
         
    <serviceClass>com.test.service.UserService</serviceClass>  
         
    <implementationClass>com.test.service.UserServiceImpl</implementationClass>  
       
    </service>  
     
    </beans> 
    參數(shù)說(shuō)明:

     

    1、name 元素:表示該webService的名稱(chēng)
    2、namespace 元素:表示該webService的命名空間
    3、serviceClass 元素:表示該webService的接口
    4、implementationClass 元素:表示該webService的實(shí)現(xiàn)類(lèi)


    三、編寫(xiě)窄接口,抽取POJO中要導(dǎo)出的服務(wù)


    從已有的UserManager.java中,抽取出一個(gè)窄接口,僅暴露需要導(dǎo)出為WebService的方法。注意UserManger.java是POJO,不需要任何WebService相關(guān)代碼。

    窄接口一方面滿(mǎn)足了安全要求,不用整個(gè)UserManager所有方法導(dǎo)出為WebService;另一方面,XFire暫時(shí)也只支持基于接口的Proxy。

    public interface UserService {
       List
    <User> getUsers();
    }


    四、配置Java-XML Binding
    如果返回類(lèi)型是List或Map,并且里面存放的是自定義類(lèi)的話(huà),則需要增加一個(gè)對(duì)于服務(wù)接口的配置文件。該文件的命名規(guī)則是 接口文件名.aegis.xml。例如接口是UserService.java的話(huà),則此配置文件命名為UserService.aegis.xml。注意此配置文件須與接口放在同一目錄下面。
     <?xml version="1.0" encoding="UTF-8"?>  
     
    <mappings>  
       
    <mapping >  
         
    <method name="getUsers">  
           
    <return-type componentType="com.test.domain.User"/>  
         
    </method>  
       
    </mapping>  
     
    </mappings> 
    getUsers方法返回類(lèi)型是List,里面裝的User對(duì)象。對(duì)于這種類(lèi)型的方法,在配置文件中描述了它的返回值類(lèi)型。

    如果返回的類(lèi)型是Map的話(huà),做法和List一樣。但定義的類(lèi)型,是Map中的Value部分,并且這樣的話(huà),Map中Value所存放的對(duì)象就必須全部是同一種類(lèi)啦。

    參考資源:
    http://wiki.springside.org.cn/display/springside/XFire
    http://www.javaeye.com/topic/70005
    http://junewolf.javaeye.com/blog/52523
    posted on 2007-04-20 18:22 josson 閱讀(3140) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): java 開(kāi)發(fā)


    FeedBack:
    # re: XFire 開(kāi)發(fā)小結(jié).
    2007-07-20 13:28 | josson
    XFire without spring.
    http://xfire.codehaus.org/Quick+Start

    引用包另需要spring.jar及xbean-spring.jar, 注:spring2.0會(huì)有問(wèn)題,services.xml文件解析會(huì)出現(xiàn)問(wèn)題。spring1.2.6版本可以解決這一問(wèn)題。  回復(fù)  更多評(píng)論
      
    <2007年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(3)

    隨筆分類(lèi)

    隨筆檔案

    收藏夾

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲成AV人在线观看天堂无码| 和日本免费不卡在线v| 免费国产成人午夜电影| 亚洲精品美女久久7777777| 97无码免费人妻超级碰碰夜夜| 亚洲日本乱码一区二区在线二产线 | 97国免费在线视频| 日韩一卡2卡3卡4卡新区亚洲 | 国产色爽免费无码视频| 亚洲熟妇无码另类久久久| 男人天堂免费视频| 亚洲五月六月丁香激情| **实干一级毛片aa免费| 久久亚洲精品国产精品婷婷| 日本特黄a级高清免费大片| 国产亚洲美女精品久久| 久久精品亚洲乱码伦伦中文| 嫩草在线视频www免费看| 亚洲精品午夜久久久伊人| 国产91免费视频| 综合一区自拍亚洲综合图区| 亚洲中文字幕无码爆乳av中文 | 黄页网址在线免费观看| 亚洲日韩中文在线精品第一 | 国产精品综合专区中文字幕免费播放| 国产亚洲精品免费视频播放| 岛国精品一区免费视频在线观看| 久久香蕉国产线看观看亚洲片| 中文字幕亚洲免费无线观看日本 | 毛片免费观看网址| 日本一区二区在线免费观看| 亚洲欧洲成人精品香蕉网| 97在线观看永久免费视频| 亚洲AV噜噜一区二区三区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 成人免费夜片在线观看| 亚洲av永久无码精品漫画| 美女视频黄a视频全免费| 一级黄色片免费观看| 亚洲的天堂av无码| 亚洲成A人片在线观看中文|