熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

解讀UDDI和JAXR

2022-06-13   來源: JSP教程 

  在過去的數年中許多開發人員都使用了各種版本的JEE使服務器端軟件編程的情形得到了很大的改觀現在他們將再次挑戰SOAP在服務器端軟件編程方面取得更大的進展
  SOAP服務的支持者認為
  ·企業級應用服務器是服務(或事務)的集合
  ·可以使用的服務應當很方便地列出來供用戶浏覽搜索和訪問
  ·象現在的基於組件的開發模式那樣將應用服務器設計為服務的集合將鼓勵開發人員采用更好的設計模式
  ·這些事務能夠被重新定位負載平衡替代等
  而對SOAP持懷疑態度的人認為SOAP是推廣CORBA和COM的又一次嘗試他們指出要簡單地訪問一個對象需要完成太多的准備性工作而且UDDI帶來的好處也被誇大了
  那麼到底哪一種觀點更合理呢?對於一些思想開放的人士而言在決定是否采用SOAP服務前他們一定希望了解其中的一些核心技術
  解密UDDI
  我們首先來看看UDDI代表什麼?UDDI是Universal Description Discovery and Integration(統一描述發現和集成)的縮寫UDDI的意圖是作為一個注冊簿就象黃頁是一個地區企業的注冊簿一樣象在黃頁中那樣在UDDI注冊簿中企業將在不同的目錄下注冊它們自己或其服務通過浏覽一個UDDI注冊簿開發人員能夠查找一種服務或一個公司並發現如何調用該服務
  除了黃頁外UDDI還使用了白頁和綠頁白頁是企業實體列表綠頁是調用一項服務所必需的文檔
  UDDI的定義非常全面足以適應不同種類的服務一個UDDI服務定義可能代表一個傳真服務或電話服務作為一種注冊簿UDDI一般使用數據庫一類的軟件來實現在該數據庫中存在一個允許發布或查詢服務的有關信息
  UDDI數據模型
  UDDI數據模型包括下面的主要元素
  ·businessEntity表示一個實際的企業
  ·businessService表示一個企業提供的服務
  ·bindingTemplate如何調用服務的說明
  ·tModel>: Good luck understanding this! (Just kidding I will explain this later)
  為了加深對UDDI數據模型的理解我們來看看這些數據元素的UML表示法是這四種主要元素之間的關系圖
  
   educitycn/img_///gif >
  
  從上面的圖中我們可以知道一個businessEntity(一家公司)有一個能夠告訴我們更多有關公司信息的描述性URL和聯系人清單此外businessEntity還有一個商業服務清單每種服務可能有多種調用方法每種調用都由一個綁定模板描述綁定模板詳細地描述了如何訪問一個服務它受益於一系列描述用戶如何訪問這一服務的文檔綁定模板和其必要的文檔之間的聯系是通過所謂的tModel完成的在上面的圖中這種聯系被簡單地描述為一個綁定模板有許多tModels在進一步地解釋tModels與綁定模板的關系前我們必須先弄清楚tModels是什麼
  TModel是什麼?
  我們可以把tModel想象成數據庫庫中的一個獨立的表其中包含下面的字段名字描述URL唯一的關健字實際上tModel就是包括有名字和描述那麼使用數據庫表表示它是否是一種浪費呢?我們下面就會討論這一問題
  下面是一個假想的tModel數據庫表中的二個實體
  鍵 名字 描述 URL
   Javaclass 表示一個具備完全資格的java類的名字
   Jndihome 表示一個JNDI名字
  
  在將tModel比作數據庫表方面有幾點值得注意首先tModel是一個獨立的表意味著它可以不依賴其他軟件而存在其次tModel是查找表提供了鍵與鍵的表示之間的轉換關系從這一點來看tModel象詞典那樣是一個引用表在一些數據庫中這樣的表也被稱作是碼集
  因此如果在上面的tModel中存在下面的記錄
  commycompanyHelloWorld
  commycompanyHelloWorldHome
  就意味著字符串commycompanyHelloWorld是一個有完整資格的Java類而字符串commycompanyHelloWorldHome是一個JNDI名
  
  因此在一定程度上tModels中唯一的鍵與名字空間這個概念差不多為了進一步地說明這個問題我們來看一下下面的數字
  
  
  x
  你能夠分清這些數字的意義嗎?我們需要在一個環境或名字空間中來確認是電話號碼是傳真號x是一個ISBN號
  因此在tModel數據庫表中我們將需要定義三個實體一個是電話號碼一個是傳真號碼一個是ISBN號碼
  下面我們以mycompany公司公布了一條號碼為myhelpline的電話支持熱線並在UDDI中注冊那麼我們的數據模型為
  company name: mycompany
  Service name: helpline
  tModel: key= (representing telephoneline) name=telephone
  description=telephone stuff url:
  some at&t url
  binding:
  accesspoint: myhelpline
  tModelInstanceInfo:
  
  有了對tModel的基本理解後我們就可以利用UML圖表來研究綁定模板與tModels之間的關系了我在上面曾經說過這將使我們對綁定模板如何完成UDDI的如何調用一項服務的要求有一個直觀的理解
   educitycn/img_///gif >
  
  在圖我們討論了一個綁定模板與tModels之間的關系從圖表中我們可以看出一個綁定模板可以指向一個由一個tModel確定的技術規格技術規格有二部分組成
  ·規格的類型(例如電子郵件傳真WSDLSOAP等
  ·確定輸入和輸出的文檔(在SOAP服務中這些文檔可以是XML輸入/輸出消息格式
  既然我們已經對tModels有了一定程度的詳細了解就該再討論UDDI中更復雜的東西了也就是身份包和類別包
  理解標識符包和類別包
  如果說從概念上理解tModels是理解UDDI需要跨越的第一道障礙那麼理解標識符包和類別包則是需要跨越的第二道障礙下面的例子可以幫助我們理解這二個概念
  例如您的公司在美國開展業務需要有一個稅號如果還在另外的國家(例如墨西哥)開展業務就需要有一個墨西哥的稅號為了能夠在UDDI注冊簿中獲取您的公司的這些信息在UDDI中應當包括下面的內容
  公司名字mycompany
  標識符
  美國稅號
  墨西哥稅號
  其他國家稅號
  
  其他的xml內容
  
  UStaxcode
  keyName=taxnumber keyValue=>
  Mexicotaxcode
  keyName=taxnumber keyValue=>
  otherstuff
  keyName=taxnumber keyValue=>
  
   其他的xml內容
  現在明白tModels如何被用作名字空間了吧為了進一步地深化對標識符包的理解我們在下面的圖中再次解釋了標識符和類別包的概念
   educitycn/img_///gif >
  從上面的圖中我們能夠看出標識符包是一個在特定環境中的鍵/值對集合這個環境從本質上說就是能夠唯一地解析名字/值對兒的名字空間它是由tModel確定的類別包也是如此二者之間唯一的區別就是類別包中由tModel確定的名字空間是一個預先確定好的類別
  類別包
  我想將公司歸類於飯店其地理位置位於傑克遜維爾
  公司名字mycompany
  適用類
  企業類型飯店
  所在城市傑克遜維爾
  
  BusinessTypeClassification
  keyName=restaurant keyValue=>
  CityClassification
  keyName=JAX keyValue=>
  

  現在我們已經搞清楚了tModels是如何用在標識符和類別包中的從本質上說tModels就是名字空間
  
  tModels也能被分類嗎?
  我們已經明白了企業實體是如何利用使用了類別包的另外UDDI也允許tModels本身被分類
  我們用分層次的文件系統進行說明目錄是用來對文件進行分類的但目錄還可以在父目錄下再被分類象硬盤上的目錄那樣tModels也可以被分層次地進行組織
  下面我們來討論名字為getUniversalTime()的服務該服務將返回當前全球任一地方的時間二家存在競爭關系的公司可能會提供這一服務的不同實現商業服務只限於在公司內部使用公司之外的用戶是不可使用的
  company:getTime()
  company:getCurrentTime()
  這二者的作用相同為了表明它們實現的是同一個被稱作getUniversalTime()的服務我們可以定義如下所示的tModel
  tModel
  name: Get Universal Time
  category: uddiorg:types wsdl
  [意味著這是一個由WSDL文檔定義的服務]
  上面的定義表明getUniversalTime()是一個WSDL服務可以由任何公司實現
  既然已經闡明了tModels和包之間的關系我們下面可以看看一個tModel的UML表示
   educitycn/img_///gif >
  從上面的圖表中我們可以看出tModel基本上就是一個名字和描述另外它也可以包含一個URL以提供更進一步的詳細資料它可以由一個標識符包確定和由一個類別包進行分類
  我們已經知道一個t
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19743.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.