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

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

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

    GHawk

    我應(yīng)該使用哪種樣式的 WSDL 呢? (From IBM developerWorks)

    我應(yīng)該使用哪種樣式的 WSDL 呢?
    內(nèi)容:
    引言
    RPC/編碼
    RPC/文字
    文檔/編碼
    文檔/文字
    文檔/文字包裝模式
    為什么不始終采用文檔/文字包裝的樣式
    SOAP 響應(yīng)消息
    結(jié)束語(yǔ)
    參考資料
    關(guān)于作者
    對(duì)本文的評(píng)價(jià)
    相關(guān)內(nèi)容:
    Web services with WSDL
    Handle namespaces in SOAP messages you create by hand
    訂閱:
    developerWorks 時(shí)事通訊

    級(jí)別: 高級(jí)

    Russell Butek
    Web 服務(wù)顧問(wèn), IBM
    2003 年 10 月 31 日
    2005 年 6 月 29 日 更新

    WSDL 綁定樣式可以是 RPC 樣式或文檔樣式。用法可以是編碼的,也可以是文字的。您如何決定使用哪一種樣式/用法的組合呢?本文將幫助您解決這個(gè)問(wèn)題。

    引言
    Web 服務(wù)是通過(guò) WSDL 文檔來(lái)描述的。WSDL 綁定描述了如何把服務(wù)綁定到消息傳遞協(xié)議(特別是 SOAP 消息傳遞協(xié)議)。WSDL SOAP 綁定可以是 RPC 樣式的綁定,也可以是文檔樣式的綁定。同樣,SOAP 綁定可以有編碼的用法,也可以有文字的用法。這給我們提供了四種樣式/用法模型:

    1. RPC/編碼
    2. RPC/文字
    3. 文檔/編碼
    4. 文檔/文字

    除了這些樣式之外,還有一種樣式也很常見(jiàn),它稱(chēng)為文檔/文字包裝的樣式,算上這一種,在創(chuàng)建 WSDL 文件時(shí)您就有了五種綁定樣式可以從中選擇。您應(yīng)該選擇哪一種呢?

    在我進(jìn)一步討論以前,讓我闡明一些容易混淆的地方。這里,這些術(shù)語(yǔ)是非常不合適的:RPC 與文檔。這些術(shù)語(yǔ)意味著 RPC 樣式應(yīng)該用于 RPC 編程模型,文檔樣式應(yīng)該用于文檔或消息編程模型。 但事實(shí)完全不是這樣。樣式對(duì)于編程模型沒(méi)有任何意義。它只是指明了如何將 WSDL 綁定轉(zhuǎn)化為 SOAP 消息。其他就沒(méi)什么了。你可以將任一種樣式用于任何編程模型。

    同樣,術(shù)語(yǔ)編碼文字只對(duì)于 WSDL 到 SOAP 映射有意義,可是,至少這里,這兩個(gè)單詞的字面意思更容易理解一些。

    對(duì)于這篇討論,讓我們從清單 1 中的 Java 方法開(kāi)始,并且應(yīng)用 JAX-RPC Java-to-WSDL 規(guī)則(參閱參考資料查看 JAX-RPC 1.1 規(guī)范)。

    清單 1. Java 方法
    public void myMethod(int x, float y);

    RPC/編碼
    采用清單 1 中的方法并且使用你喜歡的 Java-to-WSDL 工具來(lái)運(yùn)行,指定您想讓它生成 RPC/編碼的 WSDL。您最后應(yīng)該得到如清單 2 所示的 WSDL 片斷。

    清單 2. 用于 myMethod 的 RPC/編碼的 WSDL
    <message name="myMethodRequest">
        <part name="x" type="xsd:int"/>
        <part name="y" type="xsd:float"/>
    </message>
    <message name="empty"/>
    
    <portType name="PT">
        <operation name="myMethod">
            <input message="myMethodRequest"/>
            <output message="empty"/>
        </operation>
    </portType>
    
    <binding .../>  
    <!-- I won't bother with the details, just assume it's RPC/encoded. -->

    現(xiàn)在用“5”作為參數(shù) x 的值,“5.0”作為參數(shù) y 的值來(lái)調(diào)用這個(gè)方法。發(fā)送一個(gè)如清單 3 所示的SOAP 消息。

    清單 3. 用于 myMethod 的 RPC/編碼的 SOAP 消息
    <soap:envelope>
        <soap:body>
            <myMethod>
                <x xsi:type="xsd:int">5</x>
                <y xsi:type="xsd:float">5.0</y>
            </myMethod>
        </soap:body>
    </soap:envelope>

    關(guān)于前綴和命名空間的注意事項(xiàng)
    為了簡(jiǎn)單起見(jiàn),在本文的大部分 XML 示例中,我省略了命名空間和前綴。不過(guò),我還是使用了少數(shù)前綴,您可以假定它們是用下列名稱(chēng)空間進(jìn)行定義的:

    • xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    • xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

    關(guān)于命名空間和 WSDL-to-SOAP 映射的討論,請(qǐng)參考文章“Handle namespaces in SOAP messages you create by hand”(參閱 參考資料)。

    關(guān)于 RPC/編碼例子中的 WSDL 和 SOAP 消息有一些需要注意的地方:

    優(yōu)點(diǎn)

    • WSDL 盡可能的簡(jiǎn)單明了。
    • 操作名出現(xiàn)在消息中,因此接收者可以很容易的將消息分派到操作的實(shí)現(xiàn)。



    缺點(diǎn)

    遵照 WS-I
    各種 Web 服務(wù)規(guī)范有時(shí)候是不一致和不明確的。WS-I 組織成立用來(lái)解決這些規(guī)范上的問(wèn)題。它已經(jīng)定義了許多概要,指明了你應(yīng)該如何編寫(xiě) Web 服務(wù)來(lái)實(shí)現(xiàn)互操作性。要獲取 WS-I 的更多信息,請(qǐng)參閱參考資料中的 WS-I 鏈接。

    • 類(lèi)型編碼信息(xsi:type="xsd:int")通常就是降低吞吐量性能的開(kāi)銷(xiāo)。
    • 你不能很容易的驗(yàn)證這個(gè)消息的有效性,因?yàn)橹挥?<x ...>5</x><y ...>5.0</y> 行包含 Schema 中定義的內(nèi)容;soap:body 內(nèi)容的其余部分來(lái)自于 WSDL 定義。
    • 雖然它是合法的 WSDL,但 RPC/encoded 是不遵守 WS-I 的。

    有沒(méi)有一種方法可以取其精華,棄其糟粕呢?可能有。讓我們看一下 RPC/文字樣式。

    RPC/文字
    用于這個(gè)方法的 RPC/文字樣式的 WSDL 看起來(lái)與 RPC/編碼的 WSDL(清單 4)幾乎一樣。綁定的用法從 編碼 變?yōu)?文字。僅此而已。

    清單 4. 用于 myMethod 的 RPC/文字樣式的 WSDL
    <message name="myMethodRequest">
        <part name="x" type="xsd:int"/>
        <part name="y" type="xsd:float"/%gt;
    </message>
    <message name="empty"/>
    
    <portType name="PT">
        <operation name="myMethod">
            <input message="myMethodRequest"/>
            <output message="empty"/>
        </operation>
    </portType>
    
    <binding .../>  
    <!-- I won't bother with the details, just assume it's RPC/literal. -->

    RPC/文字的 SOAP 消息又是怎樣的呢(參閱清單 5)?這里的更改要多一點(diǎn)。去掉了類(lèi)型編碼。

    清單 5. 用于 myMethod 的 RPC/literal SOAP 消息
    <soap:envelope>
        <soap:body>
            <myMethod>
                <x>5</x>
                <y>5.0</y>
            </myMethod>
        </soap:body>
    </soap:envelope>

    關(guān)于 xsi:type 和文字用法的注意事項(xiàng)
    雖然在一般情況下,xsi:type 沒(méi)有出現(xiàn)在文字 WSDL 的 SOAP 消息中,但是仍然有一些情況,類(lèi)型信息是必須的,并且它將以多種形式出現(xiàn)。如果 API 期望一個(gè)基礎(chǔ)類(lèi)型,并且發(fā)送一個(gè)擴(kuò)展實(shí)例,則必須提供這個(gè)實(shí)例的類(lèi)型以便正確的反序列化該對(duì)象。

    這里是這種方法的優(yōu)點(diǎn)和缺點(diǎn):

    優(yōu)點(diǎn)

    • WSDL 盡可能的簡(jiǎn)單明了。
    • 操作名仍然出現(xiàn)在消息中。
    • 去掉了類(lèi)型編碼。
    • RPC/文字是遵循 WS-I 的。

    缺點(diǎn)

    • 你仍然不能很容易的驗(yàn)證這個(gè)消息的有效性,因?yàn)橹挥?<x ...>5</x><y ...>5.0</y> 行中包含定義在 Schema 中的內(nèi)容;soap:body 內(nèi)容的其余部分來(lái)自于 WSDL 定義。

    文檔樣式如何呢?它們能夠幫助克服這些困難嗎?

    文檔/編碼
    沒(méi)有人使用這個(gè)樣式。它不遵循 WS-I。因此此處略過(guò)。

    文檔/文字
    文檔/文字的 WSDL 在 RPC/文字的 WSDL 基礎(chǔ)上做了一些修改。其不同點(diǎn)已經(jīng)在清單 6 中指出。

    清單 6. 用于 myMethod 的文檔/文字 WSDL
    <types>
        <schema>
            <element name="xElement" type="xsd:int"/>
            <element name="yElement" type="xsd:float"/>
        </schema>
    </types>
    
    <message name="myMethodRequest">
        <part name="x" element="xElement"/>
        <part name="y" element="yElement"/>
    </message>
    <message name="empty"/>
    
    <portType name="PT">
        <operation name="myMethod">
            <input message="myMethodRequest"/>
            <output message="empty"/>
        </operation>
    </portType>
    
    <binding .../>  
    <!-- I won't bother with the details, just assume it's document/literal. -->

    用于這個(gè) WSDL 的 SOAP 消息如清單 7 所示:

    清單 7. 用于 myMethod 的文檔/文字 SOAP 消息
    <soap:envelope>
        <soap:body>
            <xElement>5</xElement>
            <yElement>5.0</yElement>
        </soap:body>
    </soap:envelope>

    關(guān)于消息組成部分的注意事項(xiàng)
    我本來(lái)可以只更改綁定,就像我從 RPC/編碼轉(zhuǎn)到 RPC/所做的那樣。它將是合法的 WSDL。然而,WS-I 基本概要(WS-I Basic Profile)規(guī)定文檔/文字的消息的組成部分引用元素而不是類(lèi)型,所以我遵循了 WS-I(并且此處使用元素部分可以很好地把我們帶到關(guān)于文檔/文字包裝的樣式的討論)。

    下面是這種方法的優(yōu)點(diǎn)和缺點(diǎn):

    優(yōu)點(diǎn)

    • 沒(méi)有類(lèi)型編碼信息。
    • 您可以在最后用任何 XML 檢驗(yàn)器檢驗(yàn)此消息的有效性。soap:body 里面的所有內(nèi)容都定義在 schema 中。
    • 文檔/文字是遵循 WS-I 的,但是有限制(參閱缺點(diǎn))。

    缺點(diǎn)

    • WSDL 有一點(diǎn)復(fù)雜。不過(guò),這是一個(gè)非常小的缺點(diǎn),因?yàn)?WSDL 并沒(méi)有打算由人來(lái)讀取。
    • SOAP 消息中缺少操作名。而如果沒(méi)有操作名,發(fā)送就可能比較困難,并且有時(shí)變得不可能。
    • WS-I 僅僅允許 SOAP 消息中 soap:body 的一個(gè)子元素。正如你在清單 7 中所見(jiàn)的那樣,該消息的 soap:body 有兩個(gè)子元素。

    文檔/文字樣式似乎只是重新排列了一下 RPC/文字模型中的優(yōu)點(diǎn)和缺點(diǎn)。你可以驗(yàn)證該消息,但是你已經(jīng)失去了操作名。有沒(méi)有什么辦法可以改進(jìn)這一點(diǎn)呢?是的,它就是文檔/文字包裝模式。

    文檔/文字包裝模式
    在我描述文檔/文字包裝模式的規(guī)則之前,讓我先向您展示 WSDL 和 SOAP 消息,如清單 8清單 9 所示。

    清單 8. 用于 myMethod 的文檔/文字封裝的 WSDL。
    <types>
        <schema>
            <element name="myMethod">
                <complexType>
                    <sequence>
                        <element name="x" type="xsd:int"/>
                        <element name="y" type="xsd:float"/>
                    </sequence>
                </complexType>
            </element>
            <element name="myMethodResponse">
                <complexType/>
            </element>
        </schema>
    </types>
    <message name="myMethodRequest">
        <part name="parameters" element="myMethod"/>
    </message>
    <message name="empty">
        <part name="parameters" element="myMethodResponse"/>
    </message>
    
    <portType name="PT">
        <operation name="myMethod">
            <input message="myMethodRequest"/>
            <output message="empty"/>
        </operation>
    </portType>
    
    <binding .../>  
    <!-- I won't bother with the details, just assume it's document/literal. -->

    WSDL Schema 現(xiàn)在把參數(shù)放在包裝中(參閱清單 9)。

    清單 9. 用于 myMethod 的文檔/文字包裝的 SOAP 消息
    <soap:envelope>
        <soap:body>
            <myMethod>
                <x>5</x>
                <y>5.0</y>
            </myMethod>
        </soap:body>
    </soap:envelope>

    注意這個(gè) SOAP 消息同 RPC/文字的 SOAP 消息(清單 5)非常相似。您可能會(huì)說(shuō),它看起來(lái)與 RPC/文字的 SOAP 消息是完全一樣的,不過(guò),這兩種消息之間存在著微妙的區(qū)別。在 RPC/文字的 SOAP 消息中,<soap:body><myMethod> 子句是操作的名稱(chēng)。在文檔/文字包裝的 SOAP 消息中,<myMethod> 子句是單個(gè)輸入消息的組成部分引用的元素的名稱(chēng)。因此,包裝的樣式具有這樣的一個(gè)特征,輸入元素的名稱(chēng)與操作的名稱(chēng)是相同的。此樣式是把操作名放入 SOAP 消息的一種巧妙方式。

    文檔/文字包裝的樣式的特征有:

    • 輸入消息只有一個(gè)組成部分。
    • 該部分是一個(gè)元素。
    • 該元素同操作有相同的名稱(chēng)。
    • 該元素的復(fù)雜類(lèi)型沒(méi)有屬性。

    下面是該種方法的優(yōu)缺點(diǎn):

    優(yōu)點(diǎn)

    • 沒(méi)有類(lèi)型編碼信息。
    • soap:body 中出現(xiàn)的所有內(nèi)容都定義在 schema 中,所以您可以很容易地檢驗(yàn)此消息的有效性。
    • 方法名又出現(xiàn)在 SOAP 消息中。
    • 文檔/文字是遵守 WS-I 的,并且包裝模式符合了 WS-I 的限制,即 SOAP 消息的 soap:body 只有一個(gè)子元素。

    缺點(diǎn)

    • WSDL 更加復(fù)雜。

    文檔/文字包裝的樣式還是有一些缺點(diǎn),不過(guò)與優(yōu)點(diǎn)比起來(lái),它們都顯得微不足道。

    RPC/文字包裝?
    從 WSDL 的角度來(lái)考慮,沒(méi)有理由只是把把包裝的樣式和文檔/文字綁定聯(lián)系在一起。它可以很容易地應(yīng)用于 RPC/文字綁定。但是這樣做是相當(dāng)不明智的。SOAP 將包含操作的一個(gè) myMethod 元素和元素名稱(chēng)的子 myMethod 元素。另外,即使它是一個(gè)合法的 WSDL,RPC/文字元素部分也不遵循 WS-I。

    文檔/文字的樣式在哪里定義?
    這種包裝類(lèi)型來(lái)源于 Microsoft?。并沒(méi)有任何規(guī)范來(lái)定義這個(gè)類(lèi)型;因此雖然這個(gè)類(lèi)型是一個(gè)好東西,但不幸的是,為了與 Microsoft 和其他公司的實(shí)現(xiàn)進(jìn)行互操作,現(xiàn)在惟一的選擇就是根據(jù) Microsoft WSDL 的輸出來(lái)猜測(cè)它是如何工作的。該模式已經(jīng)出現(xiàn)了一段時(shí)間,并且業(yè)界也很好的理解了它,雖然該模式在例子中是非常明顯的,但是也有一些內(nèi)容不夠清晰。我們希望一個(gè)獨(dú)立的組織比如 WS-I 來(lái)幫助穩(wěn)定和標(biāo)準(zhǔn)化這一模式。

    為什么不始終采用文檔/文字包裝的樣式
    至此,本文已經(jīng)給了您這樣的一個(gè)印象,文檔/文字包裝的樣式是最好的方法。而實(shí)際的情況往往確實(shí)如此。不過(guò),仍然存在著一些情況,在這些情況下,您最好是換一種別的樣式。

    采用文檔/文字非包裝的樣式的理由
    如果您已經(jīng)重載了操作,就不能采用文檔/文字包裝的樣式。

    想象一下,除了我們一直在使用的方法之外,還有另一種方法,請(qǐng)參見(jiàn)清單 10

    清單 10. 用于文檔/文字包裝的有問(wèn)題的方法
    public void myMethod(int x, float y);
    public void myMethod(int x);

    關(guān)于重載的操作的注意事項(xiàng)
    WSDL 2.0 不會(huì)允許重載的操作。這對(duì)于一些允許該操作的語(yǔ)言(比如 Java)來(lái)說(shuō)是不幸的。一些規(guī)范(比如 JAX-RPC)將不得不定義一個(gè)名稱(chēng)轉(zhuǎn)換模式(name mangling scheme)來(lái)將重載的方法映射到 WSDL 中。WSDL 2.0 只不過(guò)將問(wèn)題從 WSDL-to-SOAP 映射轉(zhuǎn)移到 WSDL-to-language 映射中。

    WSDL 允許重載的操作。但是當(dāng)你向 WSDL 上添加包裝模式的時(shí)候,需要元素有與操作相同的名稱(chēng),并且在 XML 中不能有兩個(gè)名稱(chēng)相同的元素。所以您必須采用文檔/文字非包裝的樣式或某種 RPC 樣式。

    采用 RPC/文字的樣式的理由
    由于文檔/文字非包裝的樣式?jīng)]有提供操作名,所以在有些情況下,您將需要采用某種 RPC 樣式。比如說(shuō)清單 11 中的一組方法。





    清單 11. 用于文檔/文字非包裝的樣式的問(wèn)題方法
    public void myMethod(int x, float y);
    public void myMethod(int x);
    public void someOtherMethod(int x, float y);

    現(xiàn)在假設(shè)你的服務(wù)器接收到了文檔/文字的 SOAP 消息,你可以回頭看一下清單 7。服務(wù)器應(yīng)該發(fā)送哪一種方法呢?所有您能確切知道的就是,它一定不是 myMethod(int x),因?yàn)橄⒂袃蓚€(gè)參數(shù),而這種方法只需要一個(gè)參數(shù)。它可能是其他兩種方法中的一種。采用文檔/文字的樣式,您沒(méi)有辦法知道是哪一種方法。

    假定服務(wù)器接收到一個(gè) RPC/文字的消息,而不是文檔/文字的消息,如清單 5 所示。對(duì)于這種消息,服務(wù)器很容易決定把它發(fā)送到哪一種方法。你知道該操作名稱(chēng)是 myMethod,并且你知道你有兩個(gè)參數(shù),因此肯定是 myMethod(int x, float y)

    采用 RPC/編碼的理由
    使用 RPC/編碼樣式最重要的原因是為了數(shù)據(jù)圖表。設(shè)想你有一個(gè)二進(jìn)制樹(shù),如清單 12 所示。

    清單 12. 二進(jìn)制樹(shù)節(jié)點(diǎn) schema
    <complexType name="Node">
        <sequence>
            <element name="name" type="xsd:string"/>
            <element name="left" type="Node" xsd:nillable="true"/>
            <element name="right" type="Node" xsd:nillable="true"/>
        </sequence>
    </complexType>

    根據(jù)這種節(jié)點(diǎn)定義,你可以構(gòu)建一個(gè)樹(shù),其根節(jié)點(diǎn) -- A -- 通過(guò)左/右鏈接指向節(jié)點(diǎn) B(參閱圖 1)。

    圖 1. 編碼樹(shù)。
    編碼樹(shù)

    發(fā)送數(shù)據(jù)圖表的標(biāo)準(zhǔn)方式是使用 href 標(biāo)簽,它是 RPC/編碼的樣式(清單 13)的一部分。

    清單 13. RPC/編碼的二進(jìn)制樹(shù)
    <A>
        <name>A</name>
        <left href="12345"/>
        <right href="12345"/>
    </A>
    <B id="12345">
        <name>B</name>
        <left xsi:nil="true"/>
        <right xsi:nil="true"/>
    </B>

    在任何文字樣式中,href 屬性都是不可用的,這樣圖形鏈接就不再起作用了(參閱清單 14圖 2)。你仍然有一個(gè)根節(jié)點(diǎn) A,其指向左邊的節(jié)點(diǎn) B和右邊的另一個(gè)節(jié)點(diǎn) B。這些節(jié)點(diǎn) B 都是一樣的,但是它們不是相同的節(jié)點(diǎn)。數(shù)據(jù)被復(fù)制而不是引用兩次。

    清單 14. 文字二進(jìn)制樹(shù)
    <A>
        <name>A</name>
        <left>
            <name>B</name>
            <left xsi:nil="true"/>
            <right xsi:nil="true"/>
        </left>
        <right>
            <name>B</name>
            <left xsi:nil="true"/>
            <right xsi:nil="true"/>
        </right>
    </A>

    圖 2. 文字樹(shù)
    文字樹(shù)

    在文字樣式中,您可以通過(guò)各種方法構(gòu)造圖表,但是卻沒(méi)有標(biāo)準(zhǔn)的方法;所以您做的任何事情很可能不能與網(wǎng)絡(luò)中其他端點(diǎn)上的服務(wù)進(jìn)行互操作。

    SOAP 響應(yīng)消息
    到目前為止我已經(jīng)討論了請(qǐng)求消息。但是響應(yīng)消息呢?它們是怎樣的呢?現(xiàn)在你應(yīng)該很清楚一個(gè)文檔/文字消息的響應(yīng)消息應(yīng)該是怎樣的。soap:body 的內(nèi)容是由 schema 定義的,因此你所需要做的就是查看該 schema 來(lái)了解響應(yīng)消息的內(nèi)容。比如,參考清單 15 來(lái)查看清單 8 中的 WSDL 文件的響應(yīng)消息。

    清單 15. 用于 myMethod 的文檔/文字包裝的響應(yīng) SOAP 消息
    <soap:envelope>
        <soap:body>
            <myMethodResponse/>
        </soap:body>
    </soap:envelope>

    但是用于 RPC 樣式響應(yīng)的 soap:body 的子元素是什么呢?WSDL 1.1 規(guī)范并不是很清楚。但是 WS-I 解決了這個(gè)問(wèn)題。WS-I 的 Basic Profile 指明了在 RPC/文字響應(yīng)消息中,soap:body 子元素的名稱(chēng)是“... 相應(yīng)的 wsdl:operation 名稱(chēng)加上字符串 'Response' 作為后綴。”奇怪!這正是常規(guī)包裝模式的響應(yīng)元素的名稱(chēng)。因此清單 15 可以應(yīng)用到 RPC/文字消息和文檔/文字包裝的消息。(因?yàn)?RPC/編碼并不是遵守 WS-I 的,WS-I Basic Profile 并不關(guān)心 RPC/編碼的響應(yīng)是怎樣的,但是你可以假設(shè)應(yīng)用在這里的約定也可以應(yīng)用在其他任何地方。)因此響應(yīng)消息的內(nèi)容并不神秘。

    結(jié)束語(yǔ)
    這里有四種綁定樣式(其實(shí)是五個(gè),但是文檔/編碼的樣式是沒(méi)有意義的)。雖然每種樣式都有自己的用處,但是在大多數(shù)情況下,最好的樣式是文檔/文字包裝的樣式。

    參考資料

    關(guān)于作者
    Russell Butek 是 IBM 的一名 Web 服務(wù)顧問(wèn)。他是 IBM WebSphere Web 服務(wù)引擎的開(kāi)發(fā)人員之一。他也是 JAX-RPC Java Specification Request (JSR) 專(zhuān)家組的 IBM 代表。他從事 Apache 的 AXIS SOAP 引擎的實(shí)現(xiàn)方面的研究,推動(dòng)了 AXIS 1.0 遵循 JAX-RPC 1.0。以前,他是 IBM CORBA ORB 的開(kāi)發(fā)人員和許多 OMG 特別工作組的 IBM 代表:包括可移植攔截器特別工作組(他是這個(gè)特別工作組的主席)、核心特別工作組以及互操作性特別工作組。你可以通過(guò) butek@us.ibm.com 與他聯(lián)系。

    posted on 2005-12-02 13:36 GHawk 閱讀(670) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java Enterprise

    主站蜘蛛池模板: 免费网站看v片在线香蕉| 久久久久亚洲精品无码网址色欲| 国产v片免费播放| 99无码人妻一区二区三区免费| 国产精品福利在线观看免费不卡| 亚洲av中文无码字幕色不卡| 亚洲精品国产成人99久久| 中文字幕在线亚洲精品| 免费在线看片网站| 大学生一级特黄的免费大片视频| 最近免费字幕中文大全视频| a级毛片免费播放| 美女网站免费福利视频| 国产精品极品美女自在线观看免费| 亚洲aⅴ无码专区在线观看| 亚洲伊人久久精品| 国内精品免费视频精选在线观看| 羞羞视频免费网站含羞草| 亚洲天堂2016| 亚洲熟妇av一区二区三区下载| 亚洲av无码片在线播放| 亚洲精品狼友在线播放| 亚洲色无码一区二区三区| 国产自偷亚洲精品页65页| 亚洲精品第一国产综合精品99| 亚洲AV成人潮喷综合网| 啊v在线免费观看| 国产91久久久久久久免费| 国产资源免费观看| 国产乱色精品成人免费视频| 精品无码国产污污污免费| 国产精品成人无码免费| 四虎影视免费永久在线观看| 波多野结衣视频在线免费观看| 免费jjzz在在线播放国产| 亚洲精品国产高清不卡在线| 中文字幕精品亚洲无线码一区应用| 91麻豆精品国产自产在线观看亚洲| 亚洲一区二区三区在线播放 | 亚洲电影唐人社一区二区| 亚洲视频在线观看网站|