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

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

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

    走在架構師的大道上 Jack.Wang's home

    Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks
          介紹:
              面向服務架構(SOA,Services-oriented architecture)和Web Services已經變成了當前行業的熱點話題。XFire正是在這種情況下產生的。它能夠使POJO發布為最少的Web Services,而只需要付出最小化的努力。從而,它使希望使用這項技術的初級開發者的學習曲線變得平緩。同時,由于它兼容最新標準和提供了豐富的API,XFire為高級用戶提供了更多的大好機會。
              步驟清單:   

             1、 檢查Java類的方法和默認構造函數確保為public

         2、 增加XFire servlet相關條目到web.xml中

         3、 創建services.xml,把它放到WEB-INF/classes/META-INF/xfire目錄下

         4、 增加XFire和第三方包到你的Web應用的WEB-INF/lib文件夾中


              實際例子:
     0. 定義 web.xml
          <servlet>
            <servlet-name>XFireServlet</servlet-name>
            <display-name>XFire Servlet</display-name>
            <servlet-class>org.codehaus.xfire.transport.http.XfireConfigurableServlet
             </servlet-class>
        </servlet><servlet-mapping>
            <servlet-name>XFireServlet</servlet-name>
            <url-pattern>/servlet/XFireServlet/*</url-pattern>
        </servlet-mapping>    
        <servlet-mapping>
            <servlet-name>XFireServlet</servlet-name>
            <url-pattern>/services/*</url-pattern>
        </servlet-mapping>

     1. 定義接口           

    public interface IBankingService { 

        public String transferFunds(
            String fromAccount, String toAccount, double amount, String currency);
           
    }

    2.定義實現

    import java.text.NumberFormat;
    import java.text.DecimalFormat;

    /** XFire WebServices sample implementation class.
    */
    public class BankingService implements IBankingService {
       
        //Default constructor.
        public BankingService(){   
        }
       
        /** Transfers fund from one account to another.
        */
        public String transferFunds(
            String fromAccount, String toAccount, double amount, String currency){
           
            String statusMessage = "";
                         
            //Call business objects and other components to get the job done.
            //Then create a status message and return.
            try {
                NumberFormat formatter = new DecimalFormat("###,###,###,###.00");      
                statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+
                " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;
            } catch (Exception e){
                statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();
            }
            return statusMessage;
        }
       
    }

    3. 定義 web 描述
    <beans xmlns="http://xfire.codehaus.org/config/1.0">
     
      <service>
        <name>Banking</name>
        <namespace>mybank</namespace>
        <serviceClass>com.mybank.xfire.example.IBankingService</serviceClass>
        <implementationClass>com.mybank.xfire.example.BankingService</implementationClass>
      </service> 
     
    </beans>
    4.部署獲得WSDL
        WSDL的URL應該是:http://localhost:8080/websvc/services/Banking?wsdl。
    5. 開發客戶端
    //Create a metadata of the service     
            Service serviceModel = new ObjectServiceFactory().create(IBankingService.class);       
            log.debug("callSoapServiceLocal(): got service model." );
      
            //Create a proxy for the deployed service
            XFire xfire = XFireFactory.newInstance().getXFire();
            XFireProxyFactory factory = new XFireProxyFactory(xfire);     
       
            String serviceUrl = "http://localhost:8080/websvc/services/Banking";
           
            IBankingService client = null;
            try {
                client = (IBankingService) factory.create(serviceModel, serviceUrl);
            } catch (MalformedURLException e) {
                log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());
            }   
                  
            //Invoke the service
            String serviceResponse = "";
            try {
                serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency);
           } catch (Exception e){
                log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());                
                serviceResponse = e.toString();
            }       





    本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
    posted on 2007-12-19 22:37 Jack.Wang 閱讀(1744) 評論(4)  編輯  收藏 所屬分類: 開發技術

    Feedback

    # re: XFire 應用 2007-12-20 08:26 sitinspring
    做個記號,有空細看.  回復  更多評論
      

    # re: XFire 應用 2007-12-20 09:05 Grails
    啊 Client有這么復雜啊
    client = new Client(new URL("http://localhost:8080/websvc/services/Banking?wsdl"));
    Object[] results = client.invoke("transferFunds", new Object[] {});
    這樣應該就可以了吧?  回復  更多評論
      

    # re: XFire 應用 2007-12-20 11:04 屹礫
    先看看...  回復  更多評論
      

    # re: XFire 應用 2007-12-20 11:12 esmiles
    現在XFire不是不更新了嗎?不是合并后進入Apache組織了嗎?
    能否介紹一下。  回復  更多評論
      

    主站蜘蛛池模板: 国产一级a毛一级a看免费人娇| 亚洲精品永久www忘忧草| 精品视频免费在线| 国产成人免费A在线视频| 亚洲精品无码成人片久久不卡| 无码精品A∨在线观看免费| 亚洲小说区图片区| 久久久www成人免费毛片| 亚洲 日韩 色 图网站| 成人性生交大片免费看午夜a| 亚洲人成人网毛片在线播放| 免费看无码自慰一区二区| 婷婷亚洲综合一区二区| 亚洲人午夜射精精品日韩| 皇色在线免费视频| 亚洲欧洲免费视频| 99爱在线精品免费观看| 亚洲色www永久网站| 亚洲国产精品丝袜在线观看| 一级特黄录像免费播放中文版| 亚洲熟妇无码八AV在线播放| 久久精品私人影院免费看| 亚洲国产美女精品久久久久| 免费高清小黄站在线观看| 全部在线播放免费毛片| 久久国产精品亚洲综合| 国国内清清草原免费视频99| 看一级毛片免费观看视频| 亚洲国产精华液网站w| 美女裸身网站免费看免费网站| 亚洲aⅴ无码专区在线观看春色 | 4444www免费看| 国产亚洲精品VA片在线播放| 亚洲国产主播精品极品网红| a级成人毛片免费图片| 中文字幕乱码亚洲无线三区 | 好看的亚洲黄色经典| 久久久久国产精品免费免费搜索| 一级做a爱片特黄在线观看免费看 一级做a爱过程免费视 | 一级毛片大全免费播放| 亚洲精品综合久久中文字幕|