国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

WebLogic UDDI Client API實(shí)例學(xué)習(xí)(一)

2019-11-17 06:27:22
字體:
供稿:網(wǎng)友

  在開發(fā)UDDI的客戶端程序時(shí),我們一般考慮的都是IBM提供的UDDI4J,但不知道大家注重到?jīng)]有,在BEA的WebLogic中也提供了一個(gè)非常方便的UDDI Client API。只是它被包含在weblogic.jar文件中而沒有單獨(dú)發(fā)布。WebLogic UDDI Client API的結(jié)構(gòu)完全遵循了UDDI的體系結(jié)構(gòu),所以,通過對這套API類庫的學(xué)習(xí)和實(shí)踐,相信也有助于我們更好地理解UDDI的體系架構(gòu)。

  Inquiry和Publish的基礎(chǔ)

  對UDDI注冊中心的操作不外乎兩大類:查詢和發(fā)布(刪除)。所以WebLogic定義了二個(gè)類,分別對應(yīng)查詢與發(fā)布的操作:Inquiry類用于查詢,Publish類用于發(fā)布。這兩個(gè)類位于weblogic.uddi.client.service包里,它們都繼續(xù)于UDDIService類。在UDDIService類里定義了一個(gè)URL屬性,保存著查詢或發(fā)布的URL地址。

  Inquiry和Publish類通過父類UDDIService的setURL方法來設(shè)置它們的查詢或發(fā)布地址。


  查詢 Inquiry

  向UDDI注冊中心查詢的目標(biāo)有四類:商業(yè)實(shí)體(BusinessEntity)、商業(yè)服務(wù)(BusinessService)、綁定模板信息(BindingTemplate)和tModel。我們來看Inquiry類里的方法,不難發(fā)現(xiàn),這四種目標(biāo)的查詢,正對應(yīng)Inquiry類里的四個(gè)find方法:

  它包括兩類方法find和get,其中find類方法用于查找與發(fā)現(xiàn),而get類方法用于獲取具體信息。

  四個(gè)find方法對應(yīng)四種查詢,五個(gè)get方法對應(yīng)UDDI定義的四個(gè)數(shù)據(jù)模型(商業(yè)實(shí)體對應(yīng)兩個(gè)方法)。

  一般查詢的步驟是先通過find方法得到數(shù)據(jù)模型的基本信息,以及它的一個(gè)唯一標(biāo)識(shí)Key。然后就可以根據(jù)這個(gè)Key調(diào)用get方法獲取這個(gè)模型的具體信息。

  商業(yè)實(shí)體(BusinessEntity)查詢

  通過Inquiry類定義的findBusiness方法結(jié)合getBusinessDetail方法可以在UDDI注冊中心數(shù)據(jù)庫中查詢商業(yè)實(shí)體的各種信息。

  findBusiness方法要求一個(gè)FindBusiness對象作為參數(shù),用來定義查詢的條件。

  構(gòu)建FindBusiness對象并設(shè)置它的一些屬性,比如setName(new Name(“IBM”),查詢以IBM命名的商業(yè)實(shí)體。

  查詢結(jié)果可以得到所有滿足查詢條件的BusinessInfo對象的Vector。

  BusinessInfo定義了商業(yè)實(shí)體的基本信息,比較重要的是Name和BusinessKey。

  getBusinessDetail方法根據(jù)BusinessKey的值可以得到BusinessEntity對象的Vector。

  在BusinessEntity對象中定義了多個(gè)商業(yè)實(shí)體的具體信息,包括Contact、Operator、DiscoveryURL、Description,以及Category和Identifier信息。

  下面是一段簡化的代碼,演示了如何根據(jù)參數(shù)查詢BusinessEntity的信息。

void echoBusiness(String parm){

try {

FindBusiness fb = new FindBusiness();

fb.setName(new Name(parm));

Vector vBusinessInfo =

finder.findBusiness(fb).getBusinessInfos().getBusinessInfoVector();

for(int i=0;i
BusinessInfo bInfo = (BusinessInfo)vBusinessInfo.elementAt(i);

log(bInfo.getName().getValue()+" ["+bInfo.getBusinessKey()+"]");

GetBusinessDetail gBT = new GetBusinessDetail();

gbt.addBusinessKey(bInfo.getBusinessKey());

Vector vBusinessEntity = finder.getBusinessDetail(gbt).getBusinessEntityVector();

for(int j=0;j
BusinessEntity bEntity = (BusinessEntity)vBusinessEntity.elementAt(j);

log( "authorizedname is "+bEntity.getAuthorizedName()

+" operator is "+bEntity.getOperator());

}

}

}

catch (Exception ex) {

ex.PRintStackTrace();

}

}
BusinessService和BindingTemplate的查詢

  雖然在Inquiry類中定義了findService方法,但是一般情況下可以根據(jù)查詢到的BusinessInfo對象來進(jìn)一步查詢此BusinessEntity下屬的BusinessService。注重到在BusinessInfo類中有一個(gè)方法getServiceInfos,它可以幫助我們得到此商業(yè)實(shí)體所提供的商業(yè)服務(wù)。

  從BusinessInfo對象可以獲取此商業(yè)實(shí)體下所有的ServiceInfo對象的集合。ServiceInfo對象定義了商業(yè)服務(wù)的基本信息,比較重要的有Name和ServiceKey。

  類似地,用Inquiry類提供的getServiceDetail方法可以得到商業(yè)服務(wù)的具體信息,即BusinessService類。它包括商業(yè)服務(wù)的多種有用信息,如:Description,Category等。

  進(jìn)一步,根據(jù)BusinessService類定義的getBindingTemplates方法,又可以取得此服務(wù)下的所有綁定模板信息。


  在BindingTemplate對象中定義了綁定模板的一些重要屬性,如:accessPoint等。

  再進(jìn)一步,可以從BindingTemplate中提供的方法getTModelInstanceDetails中獲取tModel Instance的具體信息,即InstanceDetails對象。包括有OverviewDoc。


  從OverviewDoc可以得到OverviewURL,這就是我們在發(fā)布WebService時(shí)的WSDL的URL地址。


  下面,筆者也給出一段代碼演示了這個(gè)查詢過程:



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 电白县| 舞钢市| 绥宁县| 雷山县| 平昌县| 信宜市| 蓝田县| 峨眉山市| 五莲县| 秀山| 平南县| 通城县| 托克逊县| 辽中县| 额尔古纳市| 静安区| 京山县| 屯留县| 剑河县| 福州市| 凤台县| 通辽市| 平泉县| 来宾市| 周至县| 囊谦县| 栖霞市| 车致| 南皮县| 宿松县| 襄汾县| 方山县| 香港 | 扶余县| 依兰县| 汾西县| 文昌市| 塘沽区| 潍坊市| 岗巴县| 花莲市|