欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
XFire:開(kāi)發(fā)WEB服務(wù)簡(jiǎn)易之道
Web服務(wù)
Web服務(wù)允許我們建立應用組件放置于網(wǎng)絡(luò )上的分布式系統. 不管這些應用組件是怎么寫(xiě)的,使用什么語(yǔ)言寫(xiě)的,要運行在什么操作系統上, 我們都能以統一的方式訪(fǎng)問(wèn)這些組件.如果一個(gè)Web服務(wù)有效并且設計實(shí)現了互用性問(wèn)題,那么無(wú)論你的應用是用什么語(yǔ)言,在什么平臺上開(kāi)發(fā)的,都可以使用這些服務(wù). 

 為了實(shí)現平臺無(wú)關(guān),實(shí)現獨立的訪(fǎng)問(wèn)Web服務(wù), 業(yè)界制定了一系列技術(shù)標準,下面是一些最重要的技術(shù):
 * XML
 * SOAP
 * WSDL
下圖展示了上述技術(shù)在工作環(huán)境中是如何使用的.

在這里,提供者是可以提供服務(wù)的應用組件, 申請者是需要使用服務(wù)的客戶(hù)端程序. 很多其他技術(shù)也參與了這個(gè)交互過(guò)程,但是這里只顯示了在Web服務(wù)環(huán)境中必不可少的核心組件.

XFire
XFire是一個(gè)免費的,開(kāi)源的SOAP框架. 它不僅允許你輕松簡(jiǎn)易地實(shí)現這么一個(gè)環(huán)境.而且還提供了很多先進(jìn)的特性.不錯,你沒(méi)有看錯,"輕松簡(jiǎn)易". 本文中你將會(huì )看到用XFire構建Web服務(wù)是多么的簡(jiǎn)單.如果你的Web應用有一個(gè)Java類(lèi), 現在你希望這個(gè)類(lèi)編程Web服務(wù),用XFire完成這一工作你不必寫(xiě)一句代碼.僅需操作一下部署描述器,你就會(huì )得到一個(gè)Web服務(wù). 是的, 就是這么簡(jiǎn)單.讓我們來(lái)看個(gè)例子.

一個(gè)簡(jiǎn)單的Java類(lèi)
我的這個(gè)例子是一個(gè)位于A(yíng)pache Tomcat 5.5.7主機運行在J2SE 1.4.2_07下的銀行應用. 我假設你已經(jīng)知道如何使用Java編寫(xiě)web應用并且已經(jīng)配置了Tomcat服務(wù)器.我們的這個(gè)應用很簡(jiǎn)單,  只完成一項工作, 就是將錢(qián)從一個(gè)帳戶(hù)轉到另一個(gè)帳戶(hù).BankingService類(lèi)中的transferFunds()為我們完成這一工作. 他需要4個(gè)傳入參數
  1. String fromAccount
  2. String toAccount
  3. double amount
  4. String currency

下面是代碼:

package com.mybank.xfire.example;

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;
    }

    
}

在上面的代碼中你看到奇怪的代碼了嗎? 大概沒(méi)有吧. 除了那個(gè)公共的默認構造函數.這個(gè)構造函數是必不可少的,因為XFire要用他來(lái)實(shí)例這個(gè)類(lèi).

因為使用接口來(lái)完成是很好的實(shí)踐,因此我們的類(lèi)也實(shí)現了一個(gè)名叫IBankingService的接口.代碼很簡(jiǎn)單:

package com.mybank.xfire.example;

public interface IBankingService {  

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

實(shí)際開(kāi)發(fā)中,這個(gè)方法可能包含所有復雜的調用,請求和處理操作,但是我們的例子將其最小化以便我們能將精力集中到我們的目標上:將這個(gè)方法轉換成Web服務(wù).

你可以看到,我們的BankingService只不過(guò)是一個(gè)普通的Java類(lèi),沒(méi)有任何代碼說(shuō)明它是否在Web服務(wù)中使用.這就對了!我們不需要寫(xiě)任何代碼,所有工作都交給部署描述去處理.
后面我將介紹如何編寫(xiě)部署描述。
摘要:XFire本身就是基于Servlet的應用,因此我們需要向文件中添加一些必要的參照.那么我們就需要配置我們創(chuàng )建的Web服務(wù).我們使用名叫services.xml的文件來(lái)完成配置。

Web應用的部署描述
在Java中,Web應用至少使用一個(gè)名叫web.xml的部署描述來(lái)部署. XFire本身就是基于Severlet的應用,因此我們需要向文件中添加一些必要的參照.那么我們就需要配置我們創(chuàng )建的Web服務(wù).我們使用名叫services.xml的文件來(lái)完成配置.

web.xml
首先想讓我們看一下web.xml.我們需要加上如下語(yǔ)句:
    <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>

services.xml
下面我們就要描述一下我們的Web服務(wù)都包含什么.這個(gè)工作在services.xml中完成.這個(gè)文件位于META-INF/xfire目錄下,下面是基本的配置條目:

<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>

讓我們看看文件中的具體內容. 對Web服務(wù)的定義包含在<service>元素內.<service>元素下還有若干子元素.
第一個(gè)子元素是<name>, 你可以提供任何有效的xml名字,這個(gè)名字會(huì )被客戶(hù)端程序和服務(wù)器上的其他組件使用.例如,當服務(wù)器起來(lái)以后,你可以在瀏覽器上使用這個(gè)名稱(chēng)來(lái)查看WSDL.
下一個(gè)子元素是<namespace>. 任何有效地xml名稱(chēng)都可以, <namespace>將作為你服務(wù)器的唯一標識變量使用.
<serviceClass>元素包含Java類(lèi)名用來(lái)指明方法的簽名.在我們的這個(gè)例子中是IBankingService接口.如果你的Java類(lèi)沒(méi)有實(shí)現任何接口,那就填入類(lèi)名.在你的Java類(lèi)或接口中也許含有不知一個(gè)方法,只需要一個(gè)入口來(lái)將他們轉換成Web服務(wù).
<implementationClass>元素記錄實(shí)現接口的Java類(lèi)名.這是一個(gè)可選元素.如果前一個(gè)元素<serviceClass>填入的是接口,那么此處就要填入相應的實(shí)現類(lèi)名.
至此,我們的Web服務(wù)配置工作就完成了.

XFire和其他庫
現在,我們做最后一步工作--獲得所有必要的庫文件.我們怎么獲得他們呢? 訪(fǎng)問(wèn)XFire官方網(wǎng)站
http://xfire.codehaus.org/ 下載xfire-distribution-1.0.zip并解壓到本地文件夾中.將下列文件拷貝到WEB-INF\lib:
  • activation-1.0.2.jar
  • commons-codec-1.3.jar
  • commons-httpclient-3.0.jar
  • commons-logging-1.0.4.jar
  • jaxen-1.1-beta-8.jar
  • jdom-1.0.jar
  • log4j-1.2.x.jar
  • mail-1.3.3_01.jar
  • spring-1.2.x.jar
  • stax-api-1.0.jar
  • wsdl4j-1.5.2.jar
  • wstx-asl-2.9.jar
  • xbean-2.1.0.jar
  • xbean-spring-2.2.jar
  • xfire-all-1.0.jar
  • XmlSchema-1.0.jar

    大功告成!讓我們部署并啟動(dòng)應用.要部署這個(gè)例子,只需要將websvc.war復制到Apache Tomcat 環(huán)境的webapps目錄下,等待幾分鐘,應用會(huì )自動(dòng)啟動(dòng). 例子的所有源代碼也包含在這個(gè)war文件中(文件太大,我將其分卷壓縮)part1  part2  part3  part4  part5.現在,我們的應用已經(jīng)是一個(gè)Web服務(wù)了. 

    我們怎么知道Web服務(wù)有效?
    我們來(lái)做一些測試,看看Web服務(wù)是否有效.
    首先,我們先來(lái)看看WSDL是否有效。在瀏覽器中輸入URL。哪個(gè)URL?因為我們的war文件名叫websvc.war,services.xml 中給出的servicenames是Banking, 那么WSDL URL為
    http://localhost:8080/websvc/services/Banking?wsdl。
    請注意:URL的前一部分,例如:
    http://localhost:8080會(huì )根據你安裝的應用服務(wù)不同而不同。如果你輸入了URL,你將會(huì )看到以<wsdl:definitions>為根結點(diǎn)的xml文件。這個(gè)文件叫做web服務(wù)的WSDL.如果你看到了這個(gè)文件,那么初步驗證你的Web服務(wù)有效。
    但是這個(gè)驗證還不夠。有時(shí)候情況會(huì )復雜一些,你可以看到WSDL,但是客戶(hù)端卻無(wú)法訪(fǎng)問(wèn)Web服務(wù)。因此要真正檢驗Web服務(wù)是否真的好使,就要用客戶(hù)端程序對Web服務(wù)作一次真正的調用。

  • 摘要:在《XFire:開(kāi)發(fā)Web服務(wù)的簡(jiǎn)易之道(二)》中最后提到過(guò):要想檢驗Web服務(wù)是否有效,需要一個(gè)客戶(hù)端程序實(shí)際調用一下這個(gè)Web服務(wù)。本章我們就來(lái)創(chuàng )建這樣一個(gè)用于檢驗的客戶(hù)端程序,驗證一下我們前面的工作是不是真的有效。最后總結一下用XFire開(kāi)發(fā)Web服務(wù)的步驟。

    創(chuàng )建客戶(hù)端程序
    我們可以使用很多方法,任何SOAP工具來(lái)創(chuàng )建客戶(hù)端程序,例如.Net或Apache Axis。我的這個(gè)例子中我是用一個(gè)名叫WsClient.java的Servlet中的動(dòng)態(tài)代理。為了減少編碼的代價(jià),我將所有屏幕構建元素都放到doGet()方法中。對Web服務(wù)服務(wù)的實(shí)際調用在callWebService()方法中。代碼很簡(jiǎn)單:

    /* Call the Web service
        *
        
    */

        
    public String callWebService(
            String fromAccount, String toAccount, 
    double amount, String currency) 
            
    throws MalformedURLException, Exception {
            
            
    //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();
            }
            
            log.debug(
    "WsClient.callWebService(): status=" + serviceResponse);              

            
    //Return the response
            return serviceResponse;
        }
       


    這段代碼做了些什么?讓我解釋一下:首先我們創(chuàng )建了一個(gè)服務(wù)模型,里面包含了對服務(wù)的描述,換句話(huà)說(shuō),我們創(chuàng )建了服務(wù)的元數據。我們是用XFire的ObjectServiceFactory通過(guò)接口IBankingService.class創(chuàng )建了這個(gè)服務(wù)模型。

    下一步就是獲取XFire的代理對象。這一步中沒(méi)有任何應用細節。通過(guò)proxyFactory,使用服務(wù)模型和服務(wù)終點(diǎn)URL(用于獲得WSDL),我們獲得了服務(wù)的本地代理。

    這個(gè)代理就是實(shí)際的客戶(hù)端?,F在我們可以調用transferFunds()方法獲得我們想要的Web服務(wù)了。

    一旦這個(gè)例子部署成功并啟動(dòng),就可以用下面的Servlet URL檢驗:
    http://localhost:8080/websvc/ws
    Servlet使用默認的參數訪(fǎng)問(wèn)Web服務(wù)并顯示接收到的響應。你應該能看到下面兩行信息
    Response Received
    COMPLETED: CDN$ 500.00 was successfully transferred from A/C# 11111-01234 to A/C# 99999-05678
    現在你可以確信Web服務(wù)真的起來(lái)了并且工作正常。

    你可以嘗試傳入不同的數據。你可以輸入類(lèi)似于下面的URL
    http://localhost:8080/websvc/ws?from=11-2345&to=77-9876&amt=250.00&cur=EUR.

    Web服務(wù)開(kāi)發(fā)的基本步驟
    下面列出了使用XFire開(kāi)發(fā)Web服務(wù)的基本步驟:
    1、檢驗Java類(lèi)的方法和構造函數時(shí)公共的;
    2、將XFire Servlet相關(guān)的入口添加到web.xml中;
    3、創(chuàng )建services.xml并把它放到WEB-INF/classes/META-INF/xfire目錄下;
    4、將Xfire和其他第三方庫添加到你的Web應用的WEB-INF/lib 目錄下。
    OK,這就是全部要做,就是這么簡(jiǎn)單。

  • 本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
    打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
    猜你喜歡
    類(lèi)似文章
    XFire:輕松簡(jiǎn)單地開(kāi)發(fā)Web Services
    XFire: The easy and simple way to develop Web...
    XFire:開(kāi)發(fā)Web服務(wù)的簡(jiǎn)易之道(三)--開(kāi)發(fā)客戶(hù)端程序
    Java使用XFire調用WebService接口
    利用CXF的wsdl2java來(lái)建立Web Service.
    使用XFire+Spring構建Web Service(一)
    更多類(lèi)似文章 >>
    生活服務(wù)
    分享 收藏 導長(cháng)圖 關(guān)注 下載文章
    綁定賬號成功
    后續可登錄賬號暢享VIP特權!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服

    欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久