免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JAXR與UDDI
SOAP服務(wù)的支持者認(rèn)為: 


  ·企業(yè)級(jí)應(yīng)用服務(wù)器是服務(wù)(或事務(wù))的集合。 
  ·可以使用的服務(wù)應(yīng)當(dāng)很方便地列出來供用戶瀏覽、搜索和訪問。 
  ·象現(xiàn)在的基于組件的開發(fā)模式那樣,將應(yīng)用服務(wù)器設(shè)計(jì)為服務(wù)的集合將鼓勵(lì)開發(fā)人員采用更好的設(shè)計(jì)模式。 
  ·這些事務(wù)能夠被重新定位、負(fù)載平衡、替代等。 

  而對(duì)SOAP持懷疑態(tài)度的人認(rèn)為,SOAP是推廣CORBA和COM的又一次嘗試。他們指出,要簡(jiǎn)單地訪問一個(gè)對(duì)象,需要完成太多的準(zhǔn)備性工作,而且,UDDI帶來的好處也被夸大了。 

  那么,到底哪一種觀點(diǎn)更合理呢?對(duì)于一些思想開放的人士而言,在決定是否采用SOAP服務(wù)前,他們一定希望了解其中的一些核心技術(shù)。 

  解密UDDI 

  我們首先來看看UDDI代表什么?UDDI是Universal Description, Discovery and Integration(統(tǒng)一描述、發(fā)現(xiàn)和集成)的縮寫。UDDI的意圖是作為一個(gè)注冊(cè)簿,就象黃頁是一個(gè)地區(qū)企業(yè)的注冊(cè)簿一樣。象在黃頁中那樣,在UDDI注冊(cè)簿中,企業(yè)將在不同的目錄下注冊(cè)它們自己或其服務(wù)。通過瀏覽一個(gè)UDDI注冊(cè)簿,開發(fā)人員能夠查找一種服務(wù)或一個(gè)公司,并發(fā)現(xiàn)如何調(diào)用該服務(wù)。 

  除了黃頁外,UDDI還使用了白頁和綠頁。白頁是企業(yè)實(shí)體列表,綠頁是調(diào)用一項(xiàng)服務(wù)所必需的文檔。 
UDDI的定義非常全面,足以適應(yīng)不同種類的服務(wù)。一個(gè)UDDI服務(wù)定義可能代表一個(gè)傳真服務(wù)或電話服務(wù)。作為一種注冊(cè)簿,UDDI一般使用數(shù)據(jù)庫一類的軟件來實(shí)現(xiàn),在該數(shù)據(jù)庫中,存在一個(gè)允許發(fā)布或查詢服務(wù)的有關(guān)信息。 

  UDDI數(shù)據(jù)模型 

  UDDI數(shù)據(jù)模型包括下面的主要元素: 

  ·businessEntity:表示一個(gè)實(shí)際的企業(yè)。 
  ·businessService:表示一個(gè)企業(yè)提供的服務(wù)。 
  ·bindingTemplate:如何調(diào)用服務(wù)的說明。 
  ·tModel>: Good luck understanding this! (Just kidding, will explain this later.) 

  為了加深對(duì)UDDI數(shù)據(jù)模型的理解,我們來看看這些數(shù)據(jù)元素的UML表示法。圖1是這四種主要元素之間的關(guān)系圖: 



  從上面的圖中我們可以知道,一個(gè)businessEntity(一家公司)有一個(gè)能夠告訴我們更多有關(guān)公司信息的描述性URL和聯(lián)系人清單,此外,businessEntity還有一個(gè)商業(yè)服務(wù)清單。每種服務(wù)可能有多種調(diào)用方法,每種調(diào)用都由一個(gè)綁定模板描述。綁定模板詳細(xì)地描述了如何訪問一個(gè)服務(wù),它受益于一系列描述用戶如何訪問這一服務(wù)的文檔。綁定模板和其必要的文檔之間的聯(lián)系是通過所謂的tModel完成的。在上面的圖中,這種聯(lián)系被簡(jiǎn)單地描述為一個(gè)綁定模板有許多tModels。在進(jìn)一步地解釋tModels與綁定模板的關(guān)系前,我們必須先弄清楚tModels是什么。 

  TModel是什么? 

  我們可以把tModel想象成數(shù)據(jù)庫庫中的一個(gè)獨(dú)立的表,其中包含下面的字段:名字、描述、URL、唯一的關(guān)健字。實(shí)際上,tModel就是包括有名字和描述,那么使用數(shù)據(jù)庫表表示它是否是一種浪費(fèi)呢?我們下面就會(huì)討論這一問題: 

  下面是一個(gè)假想的tModel數(shù)據(jù)庫表中的二個(gè)實(shí)體: 


鍵 名字 描述 URL 
Java-class 表示一個(gè)具備完全資格的java類的名字 http://www.javasoft.com/ 
Jndi-home 表示一個(gè)JNDI名字 http://www.javasoft.com/ 

  在將tModel比作數(shù)據(jù)庫表方面,有幾點(diǎn)值得注意。首先,tModel是一個(gè)獨(dú)立的表,意味著它可以不依賴其他軟件而存在;其次,tModel是查找表,提供了鍵與鍵的表示之間的轉(zhuǎn)換關(guān)系。從這一點(diǎn)來看,tModel象詞典那樣,是一個(gè)引用表。在一些數(shù)據(jù)庫中,這樣的表也被稱作是碼集。 

  因此,如果在上面的tModel中存在下面的記錄: 


com.mycompany.HelloWorld, 
com.mycompany.HelloWorldHome,  

  就意味著字符串com.mycompany.HelloWorld是一個(gè)有完整資格的Java類;而字符串com.mycompany.HelloWorldHome是一個(gè)JNDI名。 

  因此在一定程度上,tModels中唯一的鍵與“名字空間”這個(gè)概念差不多。為了進(jìn)一步地說明這個(gè)問題,我們來看一下下面的數(shù)字: 


904-555-1212 
904-555-1213 
1-56592-391-x  

  你能夠分清這些數(shù)字的意義嗎?我們需要在一個(gè)環(huán)境或名字空間中來確認(rèn),904-555-1212是電話號(hào)碼,904-555-1213是傳真號(hào),1-56592-391-x是一個(gè)ISBN號(hào)。 

  因此在tModel數(shù)據(jù)庫表中,我們將需要定義三個(gè)實(shí)體:一個(gè)是電話號(hào)碼;一個(gè)是傳真號(hào)碼,一個(gè)是ISBN號(hào)碼。 

  下面我們以mycompany公司公布了一條號(hào)碼為1-800-my-helpline的電話支持熱線,并在UDDI中注冊(cè)。那么,我們的數(shù)據(jù)模型為: 


company name: mycompany 
Service name: helpline 
tModel: key=11 (representing telephoneline), name=telephone, 
description=telephone stuff, url: 
some at&t url 
binding: 
accesspoint: 1-800-my-helpline 
tModelInstanceInfo: 11  

  有了對(duì)tModel的基本理解后,我們就可以利用UML圖表來研究綁定模板與tModels之間的關(guān)系了。我在上面曾經(jīng)說過,這將使我們對(duì)綁定模板如何完成UDDI的“如何調(diào)用一項(xiàng)服務(wù)”的要求有一個(gè)直觀的理解。 



  在圖2中,我們討論了一個(gè)綁定模板與tModels之間的關(guān)系。從圖表中我們可以看出,一個(gè)綁定模板可以指向一個(gè)由一個(gè)tModel確定的技術(shù)規(guī)格,技術(shù)規(guī)格有二部分組成: 

  ·規(guī)格的類型。(例如電子郵件、傳真、WSDL、SOAP等。) 
  ·確定輸入和輸出的文檔(在SOAP服務(wù)中,這些文檔可以是XML輸入/輸出消息格式。) 

  既然我們已經(jīng)對(duì)tModels有了一定程度的詳細(xì)了解,就該再討論UDDI中更復(fù)雜的東西了,也就是身份包和類別包。 

理解標(biāo)識(shí)符包和類別包 

  如果說從概念上理解tModels是理解UDDI需要跨越的第一道障礙,那么理解標(biāo)識(shí)符包和類別包則是需要跨越的第二道障礙。下面的例子可以幫助我們理解這二個(gè)概念。 

  例如,您的公司在美國開展業(yè)務(wù)需要有一個(gè)稅號(hào),如果還在另外的國家(例如墨西哥)開展業(yè)務(wù),就需要有一個(gè)墨西哥的稅號(hào)。為了能夠在UDDI注冊(cè)簿中獲取您的公司的這些信息,在UDDI中應(yīng)當(dāng)包括下面的內(nèi)容: 

  公司名字:mycompany 
  標(biāo)識(shí)符: 
  美國稅號(hào):111111 
  墨西哥稅號(hào):2223344 
  其他國家稅號(hào): 333333 

  ...其他的xml內(nèi)容 



keyName="taxnumber" keyValue="1111111"> 
keyName="taxnumber" keyValue="2223344"> 
keyName="taxnumber" keyValue="333333"> 
 

  ... 其他的xml內(nèi)容 

  現(xiàn)在明白tModels如何被用作名字空間了吧。為了進(jìn)一步地深化對(duì)標(biāo)識(shí)符包的理解,我們?cè)谙旅娴膱D中再次解釋了標(biāo)識(shí)符和類別包的概念: 



  從上面的圖中我們能夠看出,標(biāo)識(shí)符包是一個(gè)在特定環(huán)境中的鍵/值對(duì)集合,這個(gè)環(huán)境從本質(zhì)上說就是能夠唯一地解析名字/值對(duì)兒的名字空間,它是由tModel確定的。類別包也是如此,二者之間唯一的區(qū)別就是類別包中由tModel確定的名字空間是一個(gè)預(yù)先確定好的類別。 

  類別包

  我想將公司歸類于飯店,其地理位置位于杰克遜維爾。 

  公司名字:mycompany 
  適用類: 
  企業(yè)類型:飯店 
  所在城市:杰克遜維爾 



keyName="restaurant" keyValue=".."> 
keyName="JAX" keyValue=".."> 
 

  現(xiàn)在,我們已經(jīng)搞清楚了tModels是如何用在標(biāo)識(shí)符和類別包中的。從本質(zhì)上說,tModels就是名字空間。 

  tModels也能被分類嗎? 

  我們已經(jīng)明白了企業(yè)實(shí)體是如何利用使用了類別包的。另外,UDDI也允許tModels本身被分類。 

  我們用分層次的文件系統(tǒng)進(jìn)行說明。目錄是用來對(duì)文件進(jìn)行分類的,但目錄還可以在父目錄下再被分類。象硬盤上的目錄那樣,tModels也可以被分層次地進(jìn)行組織。 

  下面我們來討論名字為getUniversalTime()的服務(wù),該服務(wù)將返回當(dāng)前全球任一地方的時(shí)間。二家存在競(jìng)爭(zhēng)關(guān)系的公司可能會(huì)提供這一服務(wù)的不同實(shí)現(xiàn)。商業(yè)服務(wù)只限于在公司內(nèi)部使用,公司之外的用戶是不可使用的: 


company1:getTime() 
company1:getCurrentTime()  

  這二者的作用相同,為了表明它們實(shí)現(xiàn)的是同一個(gè)被稱作getUniversalTime()的服務(wù),我們可以定義如下所示的tModel: 


tModel 
name:: Get Universal Time 
category: uddi-org:types, wsdl  

  [意味著這是一個(gè)由WSDL文檔定義的服務(wù)] 

  上面的定義表明getUniversalTime()是一個(gè)WSDL服務(wù),可以由任何公司實(shí)現(xiàn)。 

  既然已經(jīng)闡明了tModels和包之間的關(guān)系,我們下面可以看看一個(gè)tModel的UML表示: 



  從上面的圖表中,我們可以看出tModel基本上就是一個(gè)名字和描述,另外,它也可以包含一個(gè)URL,以提供更進(jìn)一步的詳細(xì)資料。它可以由一個(gè)標(biāo)識(shí)符包確定和由一個(gè)類別包進(jìn)行分類。 

  我們已經(jīng)知道,一個(gè)tModel所屬于的類別是由UDDI━━WSDL、SOAP等預(yù)先定義好的,下面是一個(gè)uddi-org:types名字空間中預(yù)先定義類別的清單: 


tModel 
identifier (唯一標(biāo)識(shí)符) 
namespace 
categorization 
specification 
xmlSpec 
soapSpec 
wsdlSpec 
protocol 
transport 
signatureComponent  

  如何開始在UDDI中創(chuàng)建一個(gè)服務(wù)? 

  在開始定義服務(wù)的tModel時(shí),要求我們?yōu)榉?wù)指定一個(gè)名字和上面所列出的服務(wù)類型中的一個(gè)。當(dāng)然了,如果不喜歡上面的分類可以自己創(chuàng)建類別。 

  我們可以針對(duì)上面定義的tModel開發(fā)一個(gè)商業(yè)服務(wù)。在商業(yè)服務(wù)定義中,我們需要指定一個(gè)指向定義了服務(wù)的輸入/輸出的WSDL文檔的URL。 

  在UDDI中為什么需要tModels? 

  在UDDI中使用tModels的目的如下:

  ·對(duì)商業(yè)實(shí)體進(jìn)行標(biāo)識(shí)和分類 
  ·對(duì)商業(yè)服務(wù)進(jìn)行標(biāo)識(shí)和分類 
  ·對(duì)tModels進(jìn)行標(biāo)識(shí)和分類 
  ·將商業(yè)服務(wù)綁定到它們抽象的tModel定義上 

  UDDI名詞的快速參考 

  在看有關(guān)UDDI的資料時(shí),如果看到很深?yuàn)W的術(shù)語是一件很煩人的事兒,下面我們就把一些經(jīng)常用到的與UDDI有關(guān)的概念搜集起來,通過比較幫助我們對(duì)UDDI概念的理解: 

  接口和實(shí)現(xiàn) 

  服務(wù)綁定是一個(gè)容器,接口依賴于其實(shí)現(xiàn);綁定元素詳細(xì)說明了tModelInstaceInfo和instanceDetail, 我們將再通過一個(gè)例子加深對(duì)這一問題的例子。對(duì)于“獲得統(tǒng)一時(shí)間”服務(wù)而言,細(xì)節(jié)將提供定義了輸入、輸出的實(shí)際的WSDL文檔,綁定的訪問點(diǎn)將提供實(shí)現(xiàn)服務(wù)的物理機(jī)器和端口。了解了這些,我們可以得出如下的結(jié)論: 

  ·為一種服務(wù)定義的tModel是允許多家公司提供該服務(wù)的多個(gè)實(shí)現(xiàn)的界面。 
  ·服務(wù)綁定是具體的實(shí)現(xiàn)。 

  名字空間 

  Java、C++和XML中都有名字空間的概念,盡管其叫法可能不同,但它們都提供了使名字有意義的環(huán)境。在UDDI中,tModel象征著“名字”。當(dāng)把這個(gè)名字作為目錄使用時(shí),你的本意是,“我屬于這個(gè)名字”。從這個(gè)意義上說,tModel表示的是名字空間。 

  技術(shù)指紋 

  當(dāng)一種服務(wù)被注冊(cè)為tModel時(shí),我們可以注冊(cè)用來與該服務(wù)通訊的協(xié)議(例如WSDL、SOAP等)。因此根據(jù)所使用的協(xié)議不同,tModel有WSDL指紋或SOAP指紋。因此tModel被認(rèn)為是技術(shù)性指紋,每種指紋與一種特定的協(xié)議有關(guān)。如果說一種tModel可以代表一個(gè)“技術(shù)性指紋”,我們也可以說tModel能夠表示一種“協(xié)議”。 

  分類 

  分類與類別、名字空間類似,它提供了一種環(huán)境,只有在這種環(huán)境下,一些數(shù)字和名字才有意義。例如,

  白頁 
  UDDI注冊(cè)簿中的企業(yè)實(shí)體列表和根據(jù)名字搜索企業(yè)的能力。 

  黃頁 
  黃頁將企業(yè)實(shí)體按企業(yè)類別或其他適用的類別分類。 

  綠頁(技術(shù)規(guī)格) 
  綠頁有助于我們理解服務(wù)的定義和訪問服務(wù)的要求,serviceBindings和tModels也有助于這一目標(biāo)的實(shí)現(xiàn)。 

  JAXR 

  JAXR是在服務(wù)注冊(cè)中使用的一種Java XML API。我們以前曾經(jīng)討論過,UDDI中的所有元素都用XML文檔進(jìn)行描述。從某種意義上說,嘦我們能夠發(fā)送包含有服務(wù)描述的XML消息,UDDI注冊(cè)簿就能夠?qū)λM(jìn)行注冊(cè)或更新。
  
  下面我們討論在沒有工具的情況下如何完成這一任務(wù): 

  1、編寫必要的服務(wù)描述XML文檔。 
  2、理解SOAP頭部,以便能夠?qū)ML文件作為一個(gè)SOAP附件發(fā)送給UDDI注冊(cè)簿。 
  3、使用SOAP客戶端Java API完成第二步中的任務(wù)。 
  4、通過編程的方式處理SOAP消息。 
  5、根據(jù)UDDI服務(wù)的描述,構(gòu)造消息完成該UDDI服務(wù)的任務(wù)。 
  6、對(duì)每個(gè)消息,完成第2、3步中的操作。 
  
  如果使用JAXR,我們可以更好地完成這一任務(wù)。因?yàn)镴AXR允許我們?cè)诎l(fā)送XML消息時(shí)無需考慮SOAP頭部,而且是一種嚴(yán)格的面向消息的協(xié)議。使用JAXR,上面的任務(wù)將簡(jiǎn)化為: 

  1、編寫必要的服務(wù)描述XML文檔。 
  2、使用JAXM API發(fā)送和接收XML消息,JAXR隱藏了SOAP信息。 
  3、根據(jù)UDDI服務(wù)構(gòu)建消息完成該UDDI服務(wù)。(例如,向UDDI注冊(cè)簿注冊(cè)UDDI服務(wù)包含有4次信息交換過程。)這意味著我們?nèi)匀恍枰cXML內(nèi)容打交道。 

  使用這種方式,我們只需處理高層次的Java API即可,這些Java API能夠產(chǎn)生必需的消息并通過JAXR傳輸它們。需要指出的一點(diǎn)是,JAXR也用來完成該任務(wù)。 

  下面列出了JAXR的一些目標(biāo): 

  ·支持業(yè)界標(biāo)準(zhǔn)的XML注冊(cè)功能 
  ·支持成員機(jī)構(gòu)和企業(yè)的注冊(cè) 
  ·支持任意注冊(cè)內(nèi)容的存儲(chǔ)和提交 
  ·支持XML、非XML注冊(cè)內(nèi)容的管理 
  ·支持注冊(cè)內(nèi)容間用戶定義的結(jié)合 
  ·支持用戶定義的注冊(cè)內(nèi)容的多級(jí)分類 
  ·支持基于定義的分類計(jì)劃的注冊(cè)內(nèi)容查詢 
  ·支持基于復(fù)雜查詢的注冊(cè)內(nèi)容查詢 
  ·支持基于關(guān)健詞的注冊(cè)內(nèi)容查詢 
  ·支持Web服務(wù)的共享 
  ·支持合作伙伴間商業(yè)過程的共享 
  ·支持合作伙伴間計(jì)劃的共享 
  ·支持合作伙伴間商業(yè)文檔的共享 
  ·支持合作伙伴間貿(mào)易伙伴協(xié)議的談判 
  ·支持計(jì)劃匯編 
  ·支持異類分布注冊(cè) 
  ·支持參與各方發(fā)布/訂閱XML消息 

  JAXR將不僅僅支持UDDI,還會(huì)支持其他的類似注冊(cè)服務(wù)標(biāo)準(zhǔn)(例如ebXML)。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
藍(lán)色理想 - WebService的基本概念
Web Service 與 SOA 關(guān)系 區(qū)別
J2EE vs .NET--建置XML WebServices
XML認(rèn)證教程,第 10 部分: Web 服務(wù)
XML Web Service 基礎(chǔ)
梳理實(shí)現(xiàn)SOA的相關(guān)技術(shù)(組圖)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服