999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Java語言的Web服務的動態發現與調用研究

2010-04-12 00:00:00蘇金芝,李志武
現代電子技術 2010年14期

摘 要:Web服務是一個嶄新的分布式計算模型,它的研究重點是Web服務的新型構架,Web服務的高效執行方式,Web服務與其他成熟技術的有機結合以及Web服務的集成是解決現實應用問題的重要技術。為了充分發揮 Web 服務的靈活性,用戶必須能夠動態地發現和調用 Web 服務。動態發現Web服務的研究目標是服務發現的高效率和自動化。在此使用Java的開放源碼包uddi4j,wsdl4j和Apache Axis 2來實現Web服務的動態發現與調用的方法。該方法實現了Web服務與Java技術的有機結合,為更高效率的應用Web服務提供一種思路。

關鍵詞:分布式計算模型; Web服務;Java; UDDI

中圖分類號:TN911; TP273 文獻標識碼:A

文章編號:1004-373X(2010)14-0086-03

Dynamic Discovery and Invocation of Web Service Based on Java Technology

SU Jin-zhi,LI Zhi-wu

(Vocational and Technological College, Liaoning Shihua University, Fushun 113001, China)

Abstract:Web service is a new distributed computing model, and it is also an effective mechanism for the data and service integration on the web. Thus, web service has become a solution to E-business. It is important and necessary to carry out the research on the new architecture of web service in combination with other good techniques and on the integration of services. The Web services must be dynamically discovered and invoked in order to give full play to its flexibility, whose research aim is high efficient and automation. According to the Web Service model framework, the method of dynamic discovery and invocation of Web service using the open source packages uddi4j, wsdl4j, and Apache Axis based on Java technologies is introduced. The method, which puts Web service together with Java technologies can effectively make use of Web Service.

Keywords:distributed computing model; Web service; Java; UDDI

0 引 言

Web服務(Web Service)是一種用于應用程序集成的新技術,它并不追求代碼的可移植性,而是要使分布在互聯網中的各種系統實現交互[1]。它是下一代互聯網分布式計算的基本組成單元。Web Service提供者通過Web服務描述語言(web services description language,WSDL)的規范發布Web服務。服務請求者利用UDDI(universal description discovery and integration)協議在服務注冊中心發布注冊,在服務代理中查找所需的服務,根據返回信息的Web服務WSDL描述文件找到服務提供地址,按照服務提供者要求的規范與之綁定,采用SOAP通信使用服務提供者的服務。

Web Service的體系構架是基于服務提供者、服務注冊中心和服務請求者3個角色和發現、發布、綁定3個動作組成的[2]。發布是為了讓用戶或其他服務知道某個Web Service的存在以及相關信息,發現是為了找到合適的Web Service,綁定則是在提供者和使用者之間建立某種聯系。

1 Web服務的動態發現與調用

對于Web Service而言,其典型的體系構架應當如圖1所示[3]。從圖中可以看到,所謂Web服務發現,就是客戶以某種方式在不同類型的Web服務中找到其想要的服務,以執行Web服務請求。Web服務發現是Web服務系統架構中的一個重要部分,UDDI是其中一種解決方案。為了充分發揮 Web 服務的靈活性,用戶必須能夠動態地發現和調用 Web 服務,Web服務發現的研究目標是服務發現的高效率和自動化[4-5]。本文利用Java語言實現了Web服務的動態發現和調用方法。

Web服務發現的具體流程如下:

(1) 服務提供者將服務描述信息發布到UDDI上,以供檢索;

(2) 服務請求者發現來自 UDDI 的關于此服務的信息;

(3) 閱讀來自服務提供者的 WSDL 實現文件并進行解析,以獲取各種信息;

(4) 用 Apache Axis編碼動態請求Web服務。

圖1 Web服務架構

假定Web服務已經被發布到UDDI并等待客戶機請求。在客戶機代碼中,Web服務的動態發現與調用通過使用Java的開放源碼包uddi4j,wsdl4j和Apache Axis 2來實現。其中uddi4j是Java類庫,它可以提供用來與UDDI注冊表交互的API。該類庫生成發送到UDDI服務器和從UDDI服務器接收的消息,并對其語法進行分析;wsdl4j是一個解析和創建WSDL的Java類庫;Apache Axis的主要功能是作為一個 SOAP的實現來讓開發者通過它來構建自己的Web Service [6]。由于uddi4j能提供一個使用戶能夠查詢和發布到任何 UDDI 2.0 注冊中心的 API,所以用uddi4j來瀏覽UDDI注冊中心。wsdl4j包用于以編程方式表示WSDL文件的元素,這樣就可以瀏覽和收集來自該文件的各種信息。然后用Axis向服務器發出真正的Apache SOAP請求并等待應答。

2 Web服務的動態發現與調用的實現

2.1 在UDDI中查找Web服務

為了動態地調用Web服務,首先應知道UDDI注冊中心的查詢URL,UDDI的發布URL、業務實體的名稱以及業務服務的名稱;然后使用UDDI注冊中心的查詢URL 創建到UDDI注冊中心的代理;最后用這個代理對注冊中心進行查詢以查找所需的Web服務[7]。具體實現過程為:

private String uddiURL= \"http://localhost:80/uddisoap/urlapi\";

private String uddiPubURL = \"http://localhost:80/uddisoap/pubapi\";

private String businessName = \"lnpu\";

private String serviceName = \"newspub\";

public String findImplURI() {

try {

UDDIProxy proxy=new UDDIProxy(

new URL(uddiURL), new URL(uddiPubURL));

Vector names = new Vector();

names.add(new Name(businessName));

BusinessList businessList= proxy.find_business(names, 1, 1, 1, 1, 1,10);

Vector businessInfoVector= businessList.getBusinessInfos().getBusinessInfoVector();

BusinessInfo businessInfo = 1;

for (int i = 0; i < businessInfoVector.size(); i++) {

businessInfo = (BusinessInfo)businessInfoVector.elementAt(i);

if(businessName.equals(

businessInfo.getNameString())) {

break;

} }

Vector serviceInfoVector=businessInfo.getServiceInfos().getServiceInfoVector();

ServiceInfo serviceInfo = 1;

for (int i = 0; i < serviceInfoVector.size(); i++) {

serviceInfo = (ServiceInfo)serviceInfoVector.elementAt(i);

if(serviceName.equals(serviceInfo.getNameString())) {

break;

} }

ServiceDetail serviceDetail= proxy.get_serviceDetail(serviceInfo.getServiceKey());

Vector businessServices = serviceDetail.getBusinessServiceVector();

BusinessService businessService = 1;

for (int i = 0; i < businessServices.size(); i++) {

businessService = (BusinessService)businessServices.elementAt(i);if(serviceName.equals(

businessService.getDefaultNameString())) {

break;

} }

一旦查到了Web服務,就可以收集服務提供者機器上的WSDL實現的URI。這將由UDDI注冊中心中的tModle的Overview URL元素表示。要查找這個元素,必須先找到業務服務的綁定模板,它包含一個基于HTTP的訪問點。一旦找到了這個模板,那么就可以找到由綁定的模板引用的適當tModel。然后,用綁定模板反復進行對tModel的所有引用,在找到第一個Overview URL(即 WSDL 實現的位置)時停止。既然知道WSDL實現的URL,就可以繼續用 wsdl4j直接請求來自服務提供者的文檔并對其進行解析,從而獲得為了調用服務所需要傳送給Axis的參數。

2.2 解析WSDL

在2.1節中得到了用于Web服務WSDL實現的URL,就可以用 wsdl4j 來解析它。為了使用 Axis 調用該服務,需要從WSDL收集下列信息:目標名稱空間、服務名稱、端口名稱、操作名稱和操作輸入參數。為了收集這些信息,首先需獲取表示WSDL實現和WSDL接口的Definition 對象;接著,通過搜索實現WSDL中定義的所有imports,獲取另一個Definition對象,它表示 WSDL接口;然后,查找要被傳送給Axis的目標名稱空間;最后,查找包含了想要調用的操作的端口。收集到了調用服務所需的所有信息即可以用一個Axis 調用來調用Web服務。

2.3 用Axis調用Web服務

Axis不提供從一個完整的名稱空間創建QName 的構造程序,所以必須把端口名稱分割成名稱空間和本地部件[8-9]。創建一個Service對象(它提供WSDL實現的URL)和QName(它表示端口名稱)。 然后再創建另一個表示服務名稱的QName對象。從Service對象創建Call對象,通過傳入Call對象要調用的端口QName和操作名稱來設置其將調用的操作。最后,調用在解析 WSDL時創建的傳入Object[]參數中的操作。

3 結 語

Web服務的提供者日益增多,服務請求者如何選擇最適合自己的服務成為了一個難題。詹姆斯#8226;戈士林博士曾說過[10]:“Java技術與Web服務之間沒有界限”。本文使用Java語言實現了Web服務的動態發現 和調用,為更好地應用Web服務提供一種思路。

參考文獻

[1]FERRRACCHIA Fabio Claudio. .NET 數據服務[M].毛堯飛,譯.北京:清華大學出版社,2005.

[2]BARWELL Fred, BLAIR Richard.VB.NET高級編程[M].張加榮,譯.北京:清華大學出版社,2005.

[3]劉必欣.動態Web服務組合關鍵技術研究[D].長沙:國防科學技術大學,2005.

[4]岳昆,王曉玲,周傲英.Web服務核心支撐技術研究綜述[J].軟件學報,2004,15(3):428-442.

[5]ONION Fritz.ASP.NET基礎教程[M].北京:清華大學出版社,2003.

[6]毛枝年,強俊,程雙軍.基于Web的信息檢索系統的設計與研究[J].計算機工程與設計,2006(6):1025-1027.

[7]COYLE F P. XML, Web服務和數據革命[M].北京:清華大學出版社,2003.

[8]BALLINGER Keith.NET Web Services架構與實現[M].張曉坤,譯.北京:中國電力出版社,2004.

[9]RIEHTER Jeffrey. Microsoft. NET框架程序設計(修訂版) [M].李建忠,譯.北京:清華大學出版社,2003.

[10]柴曉路.J2EE VS.NET.Web服務誰主沉浮[EB/OL].[ 2004-03-07] .http://www-900.ibm.com/developerWorks/cn/xml/theme/indexcxl.shtml,2004.

主站蜘蛛池模板: 青青操视频在线| 中文字幕无码制服中字| 91久久国产综合精品女同我| 午夜福利视频一区| 国产乱子伦无码精品小说| 国产SUV精品一区二区6| 黄色国产在线| 幺女国产一级毛片| 丁香婷婷激情网| 国产永久无码观看在线| 亚洲人成日本在线观看| 精品视频福利| 国产网站一区二区三区| 欧美成人综合在线| 久久精品亚洲热综合一区二区| 亚洲欧美另类专区| 萌白酱国产一区二区| 国产精品高清国产三级囯产AV| 综合久久久久久久综合网| 97在线碰| 99九九成人免费视频精品 | 伊人久久久久久久久久| 欧美综合一区二区三区| 国产精品亚洲天堂| 免费观看国产小粉嫩喷水| 91精品国产自产在线老师啪l| 日本91视频| 国产国拍精品视频免费看| 国产精品久久久免费视频| 久久影院一区二区h| 熟女视频91| 亚洲欧美h| 国产小视频a在线观看| 久青草网站| 四虎永久免费网站| 四虎精品国产AV二区| 亚洲国产一成久久精品国产成人综合| 午夜精品一区二区蜜桃| 国产精品女同一区三区五区| 波多野结衣无码视频在线观看| 国产亚洲欧美日韩在线观看一区二区| 亚洲一级毛片在线观| 一本色道久久88| 四虎国产在线观看| 亚洲第一区精品日韩在线播放| 国国产a国产片免费麻豆| 久久免费观看视频| 国产精品吹潮在线观看中文| 亚洲国内精品自在自线官| 十八禁美女裸体网站| 黄色福利在线| 亚洲伊人天堂| 蜜桃视频一区二区| 在线精品自拍| 高清久久精品亚洲日韩Av| 亚洲视频免费播放| 熟女日韩精品2区| 伊人久久久大香线蕉综合直播| 亚洲成人精品| 免费看美女毛片| 国产精品人人做人人爽人人添| 2021国产v亚洲v天堂无码| 欧美激情第一区| 亚洲第一av网站| 免费一极毛片| 四虎在线高清无码| 亚洲日韩精品欧美中文字幕| 久久夜色精品| 白丝美女办公室高潮喷水视频| 国产综合色在线视频播放线视| 亚洲网综合| 亚洲三级视频在线观看| 亚洲精品麻豆| 久久精品日日躁夜夜躁欧美| 亚洲国产综合第一精品小说| 大香网伊人久久综合网2020| 国内精品久久久久久久久久影视| 国产精品免费电影| 亚洲精品制服丝袜二区| 日韩在线中文| 国产免费观看av大片的网站| 国产久操视频|