乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      開發(fā)者關(guān)于 JAX-RPC 的介紹,第 1 部分: 了解 JAX-RPC 類型映射系統(tǒng)的各個方面

       不會游泳的魚 2007-06-25

      2002 年 12 月 01 日

      用 于基于 XML 的遠程過程調(diào)用的 Java API(Java APIs for XML-Based Remote Procedure Call,JAX-RPC)是實現(xiàn) Web 服務(wù)互操作性的一個重要的促進步驟。在這第一篇文章中(共兩篇),Joshy Joseph 將帶您了解這種互操作性工作的核心:JAX-RPC 類型映射系統(tǒng)。您將了解如何把 XML 類型轉(zhuǎn)換為 Java 類型,以確保 Web 服務(wù)客戶機和基于 Java 的應(yīng)用程序之間能夠進行平穩(wěn)的數(shù)據(jù)交換。

      用于基于 XML 的遠程過程調(diào)用的 Java API(JAX-RPC)在 Java 社區(qū)過程(Java Community Process)已經(jīng)達了最終推薦階段,被命名為 JSR 101。XML Web 服務(wù)供應(yīng)商已經(jīng)開始把這個軟件包作為一個核心 API,用以在 Java 平臺上構(gòu)建可互操作的 Web 服務(wù)。在這一系列文章中,我將使用樣本代碼在整個過程中對您進行指導(dǎo),帶您逐步了解該標準提供的主要功能。在這一系列文章的最后,您將熟悉 JAX-RPC 規(guī)范的核心功能;這些知識將有助于服務(wù)開發(fā)者、客戶機開發(fā)者以及工具箱開發(fā)者設(shè)計盡可能可以互操作的 Web 服務(wù)。

      對于這里的討論,我將假定您熟悉基本的 Web 服務(wù)概念(如 SOAP、WSDL 和 XML)。(請參閱下面的 參考資料部 分,以獲取關(guān)于這些概念以及其他相關(guān)主題的更多信息。)您將要碰到的代碼樣本都是用 Apache Axis 測試版 3 和 Sun 的 Web Services Developer Pack 開發(fā)的 — 換言之,這些代碼樣本是用 JAX-RPC 規(guī)范的參考實現(xiàn)開發(fā)的。

      本文是一個由兩部分組成的系列文章的第一部分。我將從討論 JAX-RPC 的最重要方面之一 — 即類型映射系統(tǒng) — 開始討論。這個系統(tǒng)使運行時系統(tǒng)能夠?qū)?WSDL 文檔中定義的每種 XML 類型映射為 Java 服務(wù)接口所指定的相應(yīng) Java 類型,反之亦然。這是使 Web 服務(wù)可實現(xiàn)互操作的 一個主要步驟。JAX-RPC 為一組已擴展的 XML 類型和 Java 類型指定可擴展的類型映射支持。JAX-RPC 運行時系統(tǒng)實現(xiàn)序列化框架以支持該類型映射。

      在隨后的一篇文章中,我將根據(jù)在此處已經(jīng)建立的基礎(chǔ)進行討論,深入介紹該規(guī)范其余部分的具體細節(jié)。

      基本的 JAX-RPC 概念


      作 為一名 Web 服務(wù)開發(fā)者,您應(yīng)該已經(jīng)熟悉 Web 服務(wù)標準(SOAP、WSDL、XML)所提供的優(yōu)勢和體系結(jié)構(gòu)方面的靈活性了。Web 服務(wù)背后的概念幫助您使用抽象的接口設(shè)計松散耦合的服務(wù),這樣就可以把服務(wù)實現(xiàn)與服務(wù)定義分開。Web 服務(wù)社區(qū)面臨的最重要的問題是可互操作的服務(wù)的開發(fā)。為了解決這個問題,各個標準小組(包括 WS-I、OASIS、W3C 以及 SOAPBuilders)正在非常努力地為 互操作性定義標準(請參閱 參考資料以獲取更多信息)。

      JAX-RPC 是 Java 社區(qū)的工作成果,用于徹底解決這一問題,并為客戶機端和服務(wù)器端的 Web 服務(wù)實現(xiàn)提供一個眾所周知的應(yīng)用程序編程接口(application programming interface,API)。通過采用一個面向 Web 服務(wù)的標準 API,JAX-RPC 旨在幫助服務(wù)用戶(客戶機)和服務(wù)實現(xiàn)者獲得最大程度的靈活性,方法是通過把服務(wù)互操作性的重擔(dān)轉(zhuǎn)移到運行時基礎(chǔ)架構(gòu)。通過采用標準組織提供的全局標準、 使用定義明確的概要文件(例如 WS-I)以及創(chuàng)建 IDE 和其他開發(fā)工具來與這些標準相匹配,運行時框架可以提供連接級別的互操作性。

      就其本質(zhì)而言,JAX-RPC 定義并使用了一種基于 XML 的遠程過程調(diào)用機制。它使服務(wù)器(即服務(wù)提供者)能夠用標準的 API 定義其服務(wù)并且能夠用 WSDL 描述其服務(wù);它使客戶機(即服務(wù)消費者)能夠用標準的 API 與服務(wù)器進行通信。

      該規(guī)范內(nèi)容詳盡(大約 160 頁)并且向 Java 開發(fā)者介紹了新的編程模式。下面就是我將在這一系列文章中討論的概念的列表:

      • 類型映射系統(tǒng)
      • 服務(wù)端點
      • 異常處理
      • 服務(wù)端點上下文
      • 消息處理程序
      • 服務(wù)客戶機和服務(wù)上下文
      • 帶附件的 SOAP
      • 運行時服務(wù)
      • JAX-RPC 客戶機調(diào)用模型

      如上所述,這第一篇文章將僅著重介紹第一個概念:JAX-RPC 的類型映射系統(tǒng)。在后面的一篇文章中,我將探討該規(guī)范的其他關(guān)鍵概念。

      在我介紹每個主題時,我將用一個虛構(gòu)的書店(以下稱 Acme Booksellers)所提供的樣本 Web 服務(wù)代碼來闡述重點部分。



      使用 jax-rpc 框架的 acme booksellers 樣本 web 服務(wù)應(yīng)用程序

      該書店提供伙伴可以以各種方式使用的服務(wù):

      • 消費者可以根據(jù)某個搜索標準(ISBN、作者姓名等)搜索書籍。
      • 經(jīng)批準的作者可以上載書籍的更新。
      • 評論者可以撰寫書籍評論。

      大家都知道,進入 Web 服務(wù)體系結(jié)構(gòu)和實現(xiàn)有兩種體系結(jié)構(gòu)方式:

      • 自頂向下(即從 WSDL 入手)
      • 自底向上(即從 Java 實現(xiàn)類入手)

      我將用 Acme Booksellers 樣本解釋如何使用與 JAX-RPC 編程模型一致的自頂向下的設(shè)計和實現(xiàn)。您可以在 附錄中看到用于樣本服務(wù)的 WSDL 文件。一旦研究過其代碼后,您就可以繼續(xù)進行下一部分了。





      回頁首


      JAX-RPC 的類型映射系統(tǒng):介紹


      JAX-RPC 規(guī)范最重要的成就之一就是它定義了一個標準,該標準用于將 WSDL 文檔(它表示了服務(wù)描述)映射為其 Java 表示(服務(wù)端點、存根、綁定以及 Java 類型),反之亦然。以前這是一個主要的易引起混淆的地方,因為每個 Web 服務(wù)工具箱供應(yīng)商對于相關(guān)的標準(WSDL、SOAP 和 XML)以及這些標準之間的關(guān)系都有自己的解釋。因為這些標準并行發(fā)展并且尚未成熟到足可依賴的程度,所以更增加了這種混淆。

      讓我們深入討論細節(jié)問題以了解 JAX-RPC 是如何通過定義一個公共編程模型來設(shè)法徹底解決這些問題的。請注意,這個標準化成就是建立在 WSDL 1.1 和 SOAP 1.1 的基礎(chǔ)上的。

      JAX-RPC 規(guī)范中關(guān)于 WSDL 到 Java 的映射那部分解決了下列問題:

      • 將 XML 類型映射為 Java 類型
      • 將抽象的 WSDL 定義(端口類型、操作和消息)映射為 Java 接口和 Java 類。
      • 將具體的 WSDL 定義(端口、綁定和服務(wù))映射為 Java 類。

      我將逐個討論這些問題中的每一個。





      回頁首


      將 XML 類型映射為 Java 類型


      簡單類型


      XML Schema 和 SOAP 1.1 編碼所定義的大多數(shù)簡單的 XML 數(shù)據(jù)類型被映射為其對應(yīng)的 Java 類型。您可以在 JAX-RPC 規(guī)范的表 4-1 中看到這種映射的詳細信息。(請參閱 參考資料)。

      作為一名開發(fā)者,在映射簡單 XML 類型時,您應(yīng)該記住以下幾點。首先,JAX-RPC 映射規(guī)范沒有為 xsd:anyType 指定特定的 Java 映射。

      其次,內(nèi)建的簡單 XML 數(shù)據(jù)類型的 nillable 屬性被設(shè)置為 true 的元素聲明被映射為一個對應(yīng)的 Java 基本類型的 Java 包裝器類。例如,下面的代碼被映射為 java.lang.Integer 。

      <xsd:element name="code" type="xsd:int" nillable="true" /> 

      這就為類型系統(tǒng)設(shè)計提供了將空(null)對象映射為其對應(yīng)的 XML 類型的靈活性。您可以在 JAX-RPC 規(guī)范的表 4-2 中看到這些映射的完整列表(請參閱 參考資料)。

      最后,SOAP 1.1 編碼規(guī)范將其大多數(shù)的類型映射為 nillable 。JAX-RPC 使用 Java 封裝的對象來映射這些類型。請參閱 JAX-RPC 規(guī)范的表 4-3 以獲取更多信息。

      元數(shù)據(jù)和 JSR 175

      Java 社區(qū)中正在進行一些努力以解決 Java 語言中元數(shù)據(jù)信息的不可用性問題。JSR 175 中提出的元數(shù)據(jù)工具將使 Java 類、接口、方法和域能夠用額外的屬性標記。Web 服務(wù)領(lǐng)域中還有另一個項目(JSR 181)正在進行中,該項目使用這些元數(shù)據(jù)工具(屬性)來擴展 Web 服務(wù)配置及部署模型。

      復(fù)雜類型


      XML Schema 復(fù)雜類型被映射為若干個帶有 getter 和 setter 的 JavaBean 以訪問復(fù)雜類型中的每個元素。當處理這些類型時,您需要記住幾點。首先請注意,雖然復(fù)雜類型包含 xsd:sequence ,但是在這些 JavaBean 中沒有保持元素的先后順序,這一點很重要。

      其次,元素屬性 maxOccurs 值為正的復(fù)雜類型映射為一個相應(yīng)類型的 Java 數(shù)組。這樣一種類型并不定義 minOccursmaxOccurs 所有可能的組合。對于那些試圖映射所有與 XML Schema 相關(guān)聯(lián)的語義的 Java 開發(fā)者來說,這可能是個問題。

      最后,該映射的主要問題之一就是 XML 元素屬性映射。因為沒有與 Java 類相關(guān)聯(lián)的元數(shù)據(jù),所以當您試圖將 JavaBean 轉(zhuǎn)換為 WSDL 時,可能會碰到映射問題;因此,JAX-RPC 規(guī)范并未指出如何映射 xsd:attribute 。然而,在進行 SOAP 綁定時,您可以將 SOAPElement 用于此目的。Java 語言擴展將來可能會對此進行調(diào)整;請參閱標題為“ 元數(shù)據(jù)和 JSR 175”的側(cè)欄以獲取更多關(guān)于這方面的信息。

      下面的 清單 1向您展示了復(fù)雜類型映射是如何進行的。

      清單 1. 正在進行的復(fù)雜類型映射
      <xsd:complexType name ="Book">
      <sequence>
      <element name="author" type="xsd:string" maxOccurs="10" />
      <element name="price" type="xsd:float" />
      </sequence>
      <xsd:attribute name="reviewer" type="xsd:string" />
      </xsd:complexType>

      清單 2中,您可以看到 清單 1中的類型如何被映射為帶有 getter 和 setter 方法的 JavaBean。

      清單 2. 來自清單 1 的類型的 Java 映射
      Public class Book{
      private float price;
      private String[] author;
      private String reviewer; // attribute
      //....
      public String[] getAuthor() {.......}
      public setAuthor(String[] author) {.......}
      public float getPrice() {.......}
      public void setPrice(float price) {.......}
      public String getReviewer() {.....}
      public void setReviewer(String reviewer) {.....}
      }

      數(shù)組


      JAX-RPC 將 XML 數(shù)組映射為帶操作符 [] 的 Java 數(shù)組。您可以在 WSDL 服務(wù)聲明中找到幾種不同種類的數(shù)組聲明。

      第一種類型是 restriction 使用 WSDL 1.1 指定的 wsdl:ArrayType 屬性從 soapenc:Array 中派生出來的數(shù)組。

      清單 3. 用 restriction 和 wsdl:ArrayType 定義數(shù)組
      <complexType name = "ArrayOfString">
      <complexContent>
      <restriction base="soapenc:Array">
      <attribute ref="soapend:ArrayType"
      wsdlArrayType="xsd:string[]">
      </restriction>
      </complexContent>
      </complexType>

      JAX-RPC 將這些復(fù)雜數(shù)組類型映射為 Java String[] , java.lang.String 作為數(shù)組中的元素。

      下一種數(shù)組類型是 SOAP 1.1 規(guī)范所設(shè)置的 restriction 從 soapenc:Array 中派生出來的。

      清單 4. 用 restriction 和 soapenc:Array 定義數(shù)組
      <complexType name = "ArrayOfString">
      <complexContent>
      <restriction base="soapenc:Array">
      <sequence>
      <element name="stringArray" type="xsd:string"
      maxOccurs="unbounded" />
      </sequence>
      </restriction>
      </complexContent>
      </complexType>

      JAX-RPC 將這些復(fù)雜數(shù)組類型映射為 Java String[]java.lang.String 作為數(shù)組中的元素。

      您在 WSDL 中可以找到的另一種數(shù)組聲明如下所示。

      <element name="myNumbers" type="soapenc:Array" />

      清單 5展示了上述模式的一個實例。

      清單 5. 映射為 Java Object 數(shù)組
      <myNumbers soapend:arrayType="xsd:int[2]" >
      <number>1</number>
      <number>2</number>
      </myNumbers>

      該聲明被映射為一個 Java Object 數(shù)組,這個數(shù)組中的各個元素對應(yīng)于 XML Schema 類型。(此處它映射為 integer 。)

      最后,您還可以找到由用戶定義的 XML schema 類型構(gòu)造而成的數(shù)組。清單 6 展示了這種類型的定義:

      清單 6. 定義一種模式類型
      <complexType name="Article">
      <all>
      <element name="name" type="xsd:string">
      <element name="author" type="xsd:string">
      </all>
      </complexType>

      現(xiàn)在您需要定義一個 Article 類型的數(shù)組。

      清單 7. 用用戶定義的模式類型定義一個數(shù)組
      <complexType name="ArrayOfArticles">
      <complexContent>
      <restriction base="soapenc:Array">
      <sequence>
      <element name="article" type="tns:Article"
      maxOccurs="unbounded" />
      </sequence>
      </restriction>
      </complexContent>
      </complexType>

      WSDL 中的上述聲明映射為一個 Article (Article[] article;) 類型的 Java 數(shù)組。





      回頁首


      將抽象的 WSDL 類型映射為 Java 類型


      既然您理解了如何將 XML 類型映射為 Java 類型,我就要考慮 WSDL 的特殊情況了。首先,我將快速討論一下如何將抽象的 WSDL 類型映射為 Java 表示:

      • wsdl:porttype該類型被映射為服務(wù)端點接口;它擴展了 java.rmi.Remote 接口。在這一系列文章的下一篇文章中,我將討論服務(wù)端點接口以及它們的要求。
      • wsdl:operation因 為 WSDL 1.1 并沒指明操作名稱需要是唯一的,所以可以有多個名稱相同但參數(shù)不同的操作。您還應(yīng)該記住,JAX-RPC 規(guī)范僅支持 WSDL 規(guī)范定義的單向操作和請求-響應(yīng)操作;JAX-RPC 規(guī)范不支持要求-響應(yīng)(solicit-response)操作樣式或通知操作樣式。您可以用可選的 parameterOrder 屬性指定 WSDL 中的參數(shù)順序。

      我們來看一下參數(shù)傳遞樣式。從 表 1 可以看出,這些參數(shù)傳遞樣式可以是 in 、 outinout ,這取決于您要怎樣處理參數(shù)。

      表 1. 參數(shù)傳遞樣式


      定義參數(shù)的位置 參數(shù)樣式 可能的 JAX-RPC 映射類 樣本 JAX-RPC 映射類
      wsdl:input in 包裝器類或 JavaBean java.lang.Integer
      wsdl:output out Holder IntHolderStringHolder
      wsdl:inputwsdl:output inout Holder IntHolder 、 StringHolder

      表 1 所示,為了支持 out 參數(shù)和 inout 參數(shù),定義了一個新的 Holder 類。服務(wù)客戶機使用 Holder 類實例發(fā)送 out 參數(shù)或 inout 參數(shù)的值。 Holder 類的內(nèi)容是通過遠程方法調(diào)用修改的,且服務(wù)客戶機在方法調(diào)用后可以使用這些修改過的內(nèi)容。還要注意,JAX-RPC 規(guī)范定義了大量 Holder 類以支持基本類型。您可以定義自己的 Holder 類以支持從名為 Holder 的標準接口派生出來的復(fù)雜類型。

      讓我用一些樣本代碼來闡述這些要點。 清單 8包括一個樣本 WSDL 定義。

      清單 8. 樣本 WSDL 定義
          <xsd:complexType name="Authors">
      <xsd:all>
      <xsd:element name="Authors" type="typens:AuthorArray"/>
      </xsd:all>
      </xsd:complexType>
      <message name="AuthorPresentRequest">
      <part name="Authors" type="typens:Authors"/>
      </message>
      <message name="AuthorPresentResponse">
      <part name="return" type="xsd:boolean"/>
      <part name="Authors" type="typens:Authors"/>
      </message>
      <portType name="AcmeAuthorPresentPortType">
      <operation name="IsAuthorPresent">
      <input message="typens:AuthorPresentRequest"/>
      <output message="typens:AuthorPresentResponse"/>
      </operation>
      </portType>

      您可以看到輸入消息和輸出消息包含 Authors 類型作為參數(shù)。這是參數(shù)傳遞的 inout 樣式。這需要一個用于 Authors 類型的 Holder 類,如 清單 9所示。

      清單 9. 為 Authors 類型創(chuàng)建一個樣本 Holder 類
      public final class AuthorsHolder implements javax.xml.rpc.holders.Holder {
      public com.acme.www.Authors value;
      public AuthorsHolder() {}
      public AuthorsHolder(com.acme.www.Authors value) {
      this.value = value;
      }
      }

      最后, 清單 10展示了如何實現(xiàn) Java 端點。

      清單 10. Java 端點實現(xiàn)
      public interface AcmeAuthorPresentPortType extends java.rmi.Remote {
      public boolean isAuthorPresent(AuthorsHolder authors) throws java.rmi.RemoteException;
      }

      您需要理解服務(wù)端點接口的名稱以及端點方法的簽名是怎樣派生的。它們可以從 wsdl.portType 的名稱屬性和操作定義中派生,或者從 wsdl.binding 名稱和操作聲明中派生。這是您要記住的重要一點,因為可以有不同樣式的多個綁定(例如 RPC/文檔)指向同一個 portType 。這種綁定樣式上的差異可能會導(dǎo)致創(chuàng)建出帶有不同名字和簽名的不同端點。因此,您應(yīng)該謹防這種有混淆的映射。

      SOAP 消息樣式和操作編碼

      您已經(jīng)知道存在兩種 SOAP 消息樣式, 文檔RPC,它們定義了 SOAP 消息正文的格式。還存在兩種對操作的參數(shù)進行編碼的模式,即 文字的(literal)編碼的(encoded)

      表 2列出了 SOAP 消息樣式和模式并說明了 JAX-RPC 是如何對其進行定義的。





      回頁首


      將具體的 WSDL 類型映射為 Java 類型


      現(xiàn)在請把您的注意力轉(zhuǎn)到具體的 WSDL 元素以及它們的 Java 映射上。

      • wsdl:bindingJAX-RPC 沒有為 wsdl.binding 定義任何標準的 Java 表示。這意味著運行時可以定義所需的綁定。至少,JAX-RPC 運行時系統(tǒng)應(yīng)該為具有如下特征的 SOAP 綁定提供支持:

        • 帶有已編碼的操作模式(RPC/編碼的)的 RPC 樣式。
        • 帶有文字的操作模式(文檔/文字的)的文檔樣式。

        在進行文字映射時,每個消息部件都被映射為一種 Java 類型,早些時候我在前面的 將 XML 類型映射為 Java 類型部分中已經(jīng)描述過這一點。如果不存在這種映射,那么就使用一個 javax.xml.soap.SOAPElement Java 類來表示消息部件。這種映射的一個示例就是包含多個屬性的復(fù)雜類型。因為沒有為屬性定義標準的映射,所以這種復(fù)雜類型就被表示為 SOAPElement

        請參閱標題為 SOAP 消息樣式和操作編碼的側(cè)欄以及 表 2以獲取關(guān)于這些不同樣式和模式的更多信息。

        表 2. SOAP 消息樣式和 JAX-RPC


        樣式(SOAP 消息正文格式) 模式(參數(shù)編碼) JAX-RPC 相關(guān)信息
        文檔(用一種模式定義正文格式) 文字的(對每種參數(shù)編碼使用 XML Schema) 必需的
        文檔 編碼的(使用 SOAP Section 5 編碼) 可選的
        RPC(用 SOAP Section 7 規(guī)則定義正文格式) 編碼的 必需的
        RPC 文字的 可選的
      • wsdl:service這個 WSDL 具體定義對一組服務(wù)端點(或 wsdl:ports )進行分組。JAX-RPC 將 wsdl:service 映射為一個 Java 服務(wù)類。這個服務(wù)類實現(xiàn) javax.xml.rpc.Service 接口或者一個生成的 Java 接口(該 Java 接口被映射為 wsdl.service 定義),它接著再實現(xiàn) javax.xml.rpc.Service

        這個服務(wù)類充當以下內(nèi)容的工廠:

        • 服務(wù)端點的動態(tài)代理(在這一系列文章的下一篇文章中對此有更多描述)。您可以在服務(wù)對象中使用 getPort(..) 方法創(chuàng)建動態(tài)代理。
        • 一個 javax.xml.rpc.Call 類型的實例,它用于動態(tài)調(diào)用服務(wù)端點上的遠程操作(在這一系列文章的下一篇文章中對此有更多描述)。該動態(tài)調(diào)用接口需要在運行時創(chuàng)建一個 Call 對象。為此,您可以使用服務(wù)類的 createCall(..) 操作。
        • 一個生成的存根類實例(在這一系列文章的下一篇文章中對此有更多描述)。這些存根是由生成的類提供的,它們是由工具創(chuàng)建的。

        實現(xiàn) Service 接口是 JAX-RPC 運行時系統(tǒng)的責(zé)任。根據(jù)綁定要求可以存在不同的存根實現(xiàn)。還要注意, Service 實現(xiàn)類應(yīng)該實現(xiàn) java.io.Serializable 接口或 javax.naming.Referenceable 接口以支持 JNDI 名稱空間中的注冊。

      可擴展的類型映射支持

      我 在這篇文章中已經(jīng)討論過,當前的 JAX-RPC 規(guī)范定義了簡單類型的類型映射。因為這種類型映射不足以支持更復(fù)雜的數(shù)據(jù)類型,所以 JAX-RPC 規(guī)范已經(jīng)增加了支持,以便用可插的序列化器和反序列化器來擴展它的類型映射系統(tǒng)。當前的規(guī)范提供應(yīng)用程序編程模型以開發(fā)可插性,并將可插性構(gòu)建到序列化器 和反序列化器中。請向您的 JAX-RPC 供應(yīng)商咨詢以獲得更多關(guān)于它對定制類型映射的支持以及它所支持的類型這些方面的信息。還要記住,這種靈活性有一個缺點:它可能會導(dǎo)致 Web 服務(wù)實現(xiàn)間的互操作性問題。





      回頁首


      將 Java 類型映射為 WSDL


      當 然,JAX-RPC 規(guī)范中相當大一部分討論了如何將 Java 類型映射為 XML 類型以及如何將 Java 服務(wù)端點接口映射為 WSDL 定義。這樣的映射類似于我在此處所介紹的映射,但過程相反。在此我不打算詳細解釋該過程。請參考 JAX-RPC 規(guī)范的第 5 節(jié)以獲取更多信息。這是用于 Web 服務(wù)設(shè)計的自底向上體系結(jié)構(gòu),它主要用于將現(xiàn)有的、基于 Java 的應(yīng)用程序轉(zhuǎn)換為 Web 服務(wù)或者用于創(chuàng)建包裝這些應(yīng)用程序的包裝器。





      回頁首


      結(jié)束語以及展望


      在 本文中,我已經(jīng)討論了 JAX-RPC 對簡單類型映射的支持。要獲得 Web 服務(wù)實現(xiàn)間最大程度的互操作性,您需要理解這個核心概念。雖然當前的類型映射列表很詳細,但它們還沒詳盡到足以支持數(shù)據(jù)類型的所有要求。因此,JAX- RPC 運行時實現(xiàn)者可以通過定制的序列化器自由支持其他可擴展的類型映射機制。

      我希望這個關(guān)于 JAX-RPC 中的類型映射支持的討論有助于您領(lǐng)會 JAX-RPC 系統(tǒng)如何處理 XML 類型和 Java 類型以及如何將這些類型中的每一種類型轉(zhuǎn)換成其他類型而不喪失其語義這些基本概念。

      在這一系列文章的下一部分中,我將討論 JAX-RPC 規(guī)范的其他方面(包括服務(wù)實現(xiàn)、服務(wù)客戶機以及其他的核心概念)。在那之前,請努力掌握此處所概述的類型映射信息。



      參考資料

      • 您可以參閱本文在 developerWorks 全球站點上的 英文原文.

      • 請從來源(即 Java 社區(qū)過程)處獲取 JAX-RPC 規(guī)范。

      • JAX-RPC 規(guī)范的參考實現(xiàn)是基于 Apache Axis 測試版 3Sun 的 Web Services Developer Pack的。本文的代碼已經(jīng)使用這些技術(shù)測試過了。

      • 您還可以體驗最新版本的 IBM Web Services Toolkit,您可以從 alphaWorks 上得到它。

      • 在閱讀這一系列文章時,您可能會發(fā)現(xiàn)參考下列 W3C 規(guī)范是很方便的:
      • 下列小組正努力使 Web 服務(wù)可以相互操作:
      • 如需關(guān)于 Web 服務(wù)類型映射的更多信息,請查看 Gavin Bong 的系列文章“Apache SOAP Type Mapping”( developerWorks,2002 年 3 月)的 第 1 部分第 2 部分。


      關(guān)于作者

      作者相片

      Joshy Joseph 是 IBM OGSA 開發(fā)小組的一名軟件工程師。他的主要編程愛好是使用新興技術(shù)(如 Web 服務(wù)、語義 Web、REST、網(wǎng)格計算)以及使用基于 UML、AOP 和 XP 的編程模型。您可以通過 joshy@us.ibm.com與他聯(lián)系。


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多