java學(xué)習(xí)心得筆記
<soap-env:header>;
<t:transaction xmlns:t="some-uri" soap-env:mustunderstand="1">;
5
</t:transaction>;
</soap-env:header>;
<soap-env:body>;
<m:getlasttradeprice xmlns:m="some-uri">;
<symbol>;sunw</symbol>;
</m:getlasttradeprice>;
</soap-env:body>;
</soap-env:envelope>;
jaxr
為了支持uddi在java平臺上的功能,java apis for xml registries (jaxr)允許開發(fā)者來訪問注冊中心。
值得注意的是,jaxr并不是建立web服務(wù)必需的,你可以利用其他常用的xml apis來直接集成這些協(xié)議。
jaxr是一個方便的api,它提供了java api來發(fā)布,查找以及編輯那些注冊信息。它的重點在于基于xml的b2b應(yīng)用,復(fù)雜的地址本查找以及對xml消息訂閱的支持等web服務(wù)。
它也可以用來訪問其他類型的注冊中心,象ebxml注冊中心。
這些對web服務(wù)的注冊信息進行的操作,可以使用當(dāng)前的一些web服務(wù)工具來完成(例如第三方的soap和ebxml消息工具)。另外,當(dāng)jaxp提供了一致并具有針對性的api來完成這些操作,這將使開發(fā)變得更加容易。
jax/rpc
為了使開發(fā)人員專注于建立象soap那樣的基于xml的請求,jcp正在開發(fā)基于rpc (jax/rpc) 的java api。jax/rpc是用來發(fā)送和接收方法調(diào)用請求的,它基于xml協(xié)議,象soap,或者其他的象xmlp (xml protocol,要了解更多可以參考。jax/rpc使你不用再關(guān)注這些協(xié)議的規(guī)范,使應(yīng)用的開發(fā)更快速。不久,開發(fā)人員就不用直接以xml表示方法調(diào)用了。
目前有很多第三方實現(xiàn)了soap,開發(fā)人員可以在不同的層次上調(diào)用soap,并選擇使用哪一種。將來,jax/rpc會取代這些apis并提供一個統(tǒng)一的接口來構(gòu)造以及處理soap rpc請求。
在接收一個從商業(yè)伙伴那里過來的soap請求的時候,一個java servlet用jax/rpc來接收這個基于xml的請求。一旦接收到請求后,servlet會調(diào)用商務(wù)方法,并且把結(jié)果回復(fù)給商業(yè)伙伴。
jaxm
當(dāng)從商業(yè)合作伙伴那里接收一個web服務(wù)的請求時,我們需要java api實現(xiàn)一個servlet來處理ebxml消息,就象我們用jax/rpc來處理soap請求一樣。
java api for xml messaging (jaxm) 是集成xml消息標(biāo)準(zhǔn)(象ebxml消息或者soap消息)的規(guī)范。
這個api是用來推動xml消息處理的,它檢測那些預(yù)定單的消息格式以及約束。它控制了所有的消息封裝機制,用一種直觀的方式分割了消息中的信息,象路由信息,發(fā)貨單。這樣,開發(fā)人員只要關(guān)注消息的有效負(fù)載,而不用去擔(dān)心那些消息的重復(fù)處理。
目前的開發(fā)人員用jaxp來實現(xiàn)jaxm將要提供的功能,jaxm將會提供一套非常具有針對性的api來處理基于xml的消息傳送。這將大大簡化開發(fā)人員的代碼,并使它們具有統(tǒng)一的接口。
jaxm和jax/rpc的差別在于處理消息導(dǎo)向的中間件以及遠(yuǎn)程過程調(diào)用的不同。jaxm注重于消息導(dǎo)向,而jax/rpc是用來完成遠(yuǎn)程過程調(diào)用的。以下是圖解。
請注意,在jaxm 和 jax/rpc技術(shù)成熟之前,開發(fā)人員還是依賴于第三方的soap apis,象apache soap, idooxoap, 以及 glue。當(dāng)jaxm 和 jax/rpc正式發(fā)布后,它將為當(dāng)前不同的soap和ebxml消息提供統(tǒng)一的接口。就象jdbc位多種不同的數(shù)據(jù)庫提供統(tǒng)一的接口。
jaxb
xml綁定技術(shù)可以把xml文檔和java對象進行自由轉(zhuǎn)換。
用jaxb,你可以在后臺的ejb層,把xml文檔轉(zhuǎn)換成java對象。同樣你也可以把從ejb中取出的java對象轉(zhuǎn)換成xml文檔返回給用戶。
jaxb接口提供了比sax和dom更高級的方法來處理xml文檔。它提供的特性可以在xml數(shù)據(jù)和java類之間互相映射,提供了一個簡單的方法來轉(zhuǎn)換xml數(shù)據(jù)。它比逐個解析標(biāo)記更簡單。
2.2 建立weservice的步驟
在建立weservice的時候,有三個主要步驟:
1.建立客戶端聯(lián)接
為了允許applets,applications,商業(yè)合作伙伴,瀏覽器和pdas 使用web服務(wù)。
2.實現(xiàn)web服務(wù)
包括工作流,數(shù)據(jù)傳送,商業(yè)邏輯以及數(shù)據(jù)訪問。這些功能是隱藏在web服務(wù)后,并且為客戶端工作的。
3.聯(lián)接后臺系統(tǒng)
這個系統(tǒng)可能包括一個或多個數(shù)據(jù)庫,現(xiàn)存的企業(yè)信息系統(tǒng),商業(yè)合作伙伴自己的系統(tǒng)或者web服務(wù),以及在多個系統(tǒng)中共享的數(shù)據(jù)。
基于j2ee的web服務(wù)的核心構(gòu)架:
rmi
1. rmi-iiop
2. rmi 是在java中使用remote method invocation的最初的方法,rmi使用java.rmi包
rmi-iiop 是rmi的一個特殊版本,rmi-iiop可以和corba兼容,rmi-iiop使用java.rmi包和javax.rmi
jaf(java活動構(gòu)架)
開發(fā)者可以使用jaf來決定任意一塊數(shù)據(jù)的類型、封裝對數(shù)據(jù)的訪問、尋找合適的操作、實例化相關(guān)的bean來執(zhí)行這些操作等。
例如,javamail就是使用jaf根據(jù)mime類型來決定實例化那一個對象。
ejb
1. ejb組件實現(xiàn)代碼的限制
ejb組件的約束
ejb的開發(fā)者并不需要在ejb的組件實現(xiàn)代碼中編寫系統(tǒng)級的服務(wù),ejb提供商/開發(fā)
者需知道并且嚴(yán)格地遵守一些限制,這些限制與開發(fā)穩(wěn)定的和可移植的ejb組件的利益有