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视频精品| 福利片91| 亚洲成aⅴ人在线观看| 亚洲中文字幕手机在线第一页| 草逼视频国产| 日韩精品久久久久久久电影蜜臀| 中文字幕在线日韩91| 亚洲视频四区| 中文字幕 91| 日本91在线| 97精品伊人久久大香线蕉| 国产在线视频欧美亚综合| 亚洲一区无码在线| 亚洲色图欧美在线| 亚洲色图欧美一区| 中文字幕佐山爱一区二区免费| 天天躁狠狠躁| 国产一区二区三区在线精品专区| 国产精品久久久久久久久久久久| 国产青青操| 永久免费无码日韩视频| 精品无码日韩国产不卡av| 91口爆吞精国产对白第三集| 999国产精品永久免费视频精品久久| 日本一区中文字幕最新在线| 国产精品第一区在线观看| 19国产精品麻豆免费观看| 免费在线色| 国产91精品调教在线播放| 国产性爱网站| 99精品视频在线观看免费播放| 97国产在线观看| 亚洲一区二区三区麻豆| 亚洲精品午夜无码电影网| 日本国产在线| 欧美精品一二三区| 一级毛片不卡片免费观看| 欧美成人第一页| 99999久久久久久亚洲| 日韩精品亚洲一区中文字幕| av在线无码浏览| 一级毛片a女人刺激视频免费| 日韩国产欧美精品在线| 久久毛片基地| 国产真实乱了在线播放| 在线观看无码a∨| 国产人前露出系列视频| 朝桐光一区二区| 另类欧美日韩| 日本道综合一本久久久88| 国产精品自在在线午夜| 国产欧美日韩视频怡春院| 97精品国产高清久久久久蜜芽| 国产乱人免费视频| 精品五夜婷香蕉国产线看观看| 久久黄色一级视频| 8090午夜无码专区| 亚洲欧美一级一级a| 香蕉eeww99国产在线观看| 毛片视频网| 永久毛片在线播| 最新亚洲人成无码网站欣赏网| 色综合五月| 国产乱子伦视频在线播放 | 伊人AV天堂| 97久久免费视频| 免费黄色国产视频| 国产人碰人摸人爱免费视频| 免费在线色| 国产99精品久久| 亚洲欧美在线综合一区二区三区| 亚洲AV成人一区二区三区AV| 日韩精品成人网页视频在线| 国产毛片一区| 亚洲激情区| 夜精品a一区二区三区| 中文字幕天无码久久精品视频免费| 国产欧美精品午夜在线播放| 亚洲第一区欧美国产综合 | a免费毛片在线播放| 亚洲男人的天堂久久香蕉| 成人夜夜嗨|