專利名稱:客戶機(jī)Web服務(wù)訪問(wèn)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)Web服務(wù)的客戶機(jī)訪問(wèn),更具體地說(shuō),本發(fā)明涉及來(lái)自Web客戶機(jī)對(duì)Web服務(wù)的訪問(wèn)的請(qǐng)求的處理。
背景技術(shù):
最近幾年,Web服務(wù)已變得十分流行,例如,提供Web服務(wù)的商家能夠使Web客戶機(jī)在Internet上從該商家購(gòu)買貨物。繼Web服務(wù)的這一成功,人們對(duì)Internet的使用日益增加,而且對(duì)Web客戶機(jī)和Web商務(wù)的需求日趨復(fù)雜。從而,導(dǎo)致了中間件的提供,中間件的提供可使客戶機(jī)以新的和更好的方式訪問(wèn)Web服務(wù),而且也可使商家以新的和更好的方式實(shí)現(xiàn)Web服務(wù)。
例如,服務(wù)總線為Web服務(wù)提供了一種可靈活控制的基礎(chǔ)結(jié)構(gòu)。通常,在服務(wù)總線中操作的客戶機(jī)與Web服務(wù)提供商使用一種連接到服務(wù)總線的智能客戶機(jī)“客戶機(jī)端入站”,從而可以把背景和其它環(huán)境信息添加到客戶機(jī)/Web服務(wù)交互過(guò)程,因此,例如,可以根據(jù)Web服務(wù)及其客戶機(jī)的要求,正確地處理安全、交易以及其它處理。另外,還將允許以可管理的方式進(jìn)行服務(wù)的選擇與發(fā)現(xiàn),以致于當(dāng)客戶機(jī)希望訪問(wèn)某一Web服務(wù)時(shí),能夠使用一個(gè)基于客戶機(jī)所需功能所找到的Web服務(wù)。例如,客戶機(jī)可以請(qǐng)求銷售IBM計(jì)算機(jī)設(shè)備的Web服務(wù)在英國(guó)交貨,并且接受通過(guò)American Express的付款方式。申請(qǐng)?zhí)?0/322053、名為“Apparatus and method for selecting a web servicein response to a request from a client device”、發(fā)明者為Flurry和Holdsworth的美國(guó)專利申請(qǐng)中公開(kāi)了這樣一種智能客戶機(jī)“客戶機(jī)端入站”和Web服務(wù)總線結(jié)構(gòu)。
然而,服務(wù)總線環(huán)境中的某些客戶機(jī)或Web服務(wù)可能不知道總線基礎(chǔ)結(jié)構(gòu),例如,客戶機(jī)可能是特定硬件編碼以便用特定的URL和格式來(lái)訪問(wèn)Web服務(wù)的.NET、C、或Python/Perl/javaScript SOAP客戶機(jī),而客戶機(jī)難以對(duì).NET、C、或Python/Perl/javaScript SOAP進(jìn)行編碼,以使用某一特定的URL以及對(duì)它們進(jìn)行格式化,以訪問(wèn)Web服務(wù)。另外,這些客戶機(jī)也不能使用專門用于訪問(wèn)服務(wù)總線基礎(chǔ)結(jié)構(gòu)的應(yīng)用程序接口(API),例如Web ServicesInvocation Framework(WSIF)或Java JSR 109編程模型(可從Java Community,Process Web網(wǎng)點(diǎn)獲得)(Java是Sun Microsystems公司的一個(gè)商標(biāo))來(lái)編寫。通常,為了服務(wù)總線處理來(lái)自這樣的客戶機(jī)的請(qǐng)求,把該客戶機(jī)請(qǐng)求轉(zhuǎn)發(fā)至一個(gè)集線器中介或網(wǎng)關(guān),以由服務(wù)總線加以處理。例如,作為Web服務(wù)的提供商,公布一個(gè)網(wǎng)關(guān),當(dāng)收到客戶機(jī)請(qǐng)求時(shí),可以把該請(qǐng)求路由到一個(gè)以可管理的方式所發(fā)現(xiàn)和所選擇的適當(dāng)?shù)腤eb服務(wù)提供商,這一可管理的方式也將用于可察覺(jué)服務(wù)總線(service bus sensitive)的客戶機(jī)。然而,這將要求可對(duì)客戶機(jī)進(jìn)行更新,以把客戶機(jī)請(qǐng)求中所指定的URL改變?yōu)榧€器中介的URL。然而在某些場(chǎng)景下,不能夠以這一方式對(duì)客戶機(jī)進(jìn)行更新。而且,這一中介可能不能夠執(zhí)行那些僅可由客戶機(jī)執(zhí)行的動(dòng)作,例如把客戶機(jī)專用信息添加到請(qǐng)求中。
發(fā)明內(nèi)容
因此,根據(jù)第一方面,本發(fā)明為客戶機(jī)數(shù)據(jù)處理主機(jī)提供了一種轉(zhuǎn)換來(lái)自Web客戶機(jī)請(qǐng)求的客戶機(jī)數(shù)據(jù)處理方法,該方法包括攔截請(qǐng)求;把請(qǐng)求中所指定的一個(gè)第一Web服務(wù)實(shí)現(xiàn)改變?yōu)橐粋€(gè)第二Web服務(wù)實(shí)現(xiàn);以及把請(qǐng)求轉(zhuǎn)發(fā)到第二Web服務(wù)實(shí)現(xiàn),從而可使第二Web服務(wù)實(shí)現(xiàn)處理該請(qǐng)求,其中,基于與Web客戶機(jī)相關(guān)的策略數(shù)據(jù)選擇第二Web服務(wù)實(shí)現(xiàn)。
根據(jù)第二方面,本發(fā)明提供了一種用于轉(zhuǎn)換來(lái)自Web客戶機(jī)請(qǐng)求的客戶機(jī)數(shù)據(jù)處理設(shè)備,該設(shè)備包括用于攔截請(qǐng)求的裝置;用于把請(qǐng)求中所指定的一個(gè)第一Web服務(wù)實(shí)現(xiàn)改變?yōu)橐粋€(gè)第二Web服務(wù)實(shí)現(xiàn)的裝置;以及用于把該請(qǐng)求轉(zhuǎn)發(fā)到第二Web服務(wù)實(shí)現(xiàn),從而可使第二Web服務(wù)實(shí)現(xiàn)處理該請(qǐng)求的裝置,其中,基于與Web客戶機(jī)相關(guān)的策略數(shù)據(jù)選擇第二Web服務(wù)實(shí)現(xiàn)。
根據(jù)第三方面,本發(fā)明提供了一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括指令,當(dāng)在數(shù)據(jù)處理主機(jī)上執(zhí)行這些指令時(shí),可使數(shù)據(jù)處理主機(jī)執(zhí)行一個(gè)根據(jù)第一方面的方法。
因此,本發(fā)明使得能夠在客戶機(jī)實(shí)現(xiàn)中攔截用于特定Web服務(wù)的客戶機(jī)請(qǐng)求,并且能夠以可管理的方式將該請(qǐng)求轉(zhuǎn)換成對(duì)于和已選擇的Web服務(wù)不同的Web服務(wù)的一個(gè)請(qǐng)求。例如,策略數(shù)據(jù)可以為Web客戶機(jī)指定具體的服務(wù)質(zhì)量要求,從而可訪問(wèn)和Web客戶機(jī)服務(wù)質(zhì)量要求更加匹配的Web服務(wù)。
可以在應(yīng)用層協(xié)議,例如在基于超文本傳輸協(xié)議的簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP/HTTP)、基于因特網(wǎng)的ORB間協(xié)議(IIOP)或基于Java消息服務(wù)(JMS)的SOAP中指定Web客戶機(jī)請(qǐng)求。作為選項(xiàng),也可以把請(qǐng)求進(jìn)一步修改為其中指定了Web客戶機(jī)請(qǐng)求的不同的應(yīng)用層協(xié)議。例如,可以將其從SOAP/HTTP請(qǐng)求改變至IIOP請(qǐng)求。
存在著關(guān)于如何攔截請(qǐng)求的多種替代。作為選項(xiàng),如果客戶機(jī)數(shù)據(jù)處理主機(jī)的協(xié)議堆棧包括對(duì)SOCKS的支持,則可以使用對(duì)客戶機(jī)來(lái)說(shuō)是本地的SOCKS代理對(duì)SOCKS支持進(jìn)行配置,而且當(dāng)協(xié)議堆棧正在處理請(qǐng)求時(shí),可以通過(guò)調(diào)用SOCKS代理進(jìn)入攔截請(qǐng)求的步驟。作為選項(xiàng),如果客戶機(jī)數(shù)據(jù)處理主機(jī)的協(xié)議堆棧包括對(duì)HTTP的支持,則可以支持具有HTTP代理的配置,在這種情況下,對(duì)請(qǐng)求的攔截可以通過(guò)調(diào)用一個(gè)本地HTTP代理來(lái)產(chǎn)生。作為替代,也可以把協(xié)議堆棧修改為在處理過(guò)程中請(qǐng)求攔截和調(diào)用一個(gè)用于使得能夠改變請(qǐng)求步驟的例程。
優(yōu)選的做法是,為了選擇一個(gè)第二Web服務(wù)實(shí)現(xiàn),發(fā)現(xiàn)一或多個(gè)處理請(qǐng)求的替代Web服務(wù)實(shí)現(xiàn),然后,例如,基于所公布的策略數(shù)據(jù),使用Web服務(wù)策略(Web Services Policy)框架(WS-Policy),從這些所發(fā)現(xiàn)的Web服務(wù)實(shí)現(xiàn)中選擇第二Web服務(wù)實(shí)現(xiàn)。
作為選項(xiàng),可以通過(guò)獲得針對(duì)第一Web服務(wù)實(shí)現(xiàn)的Web服務(wù)定義語(yǔ)言(Web Services Definition Language(WSDL))文檔,發(fā)現(xiàn)該一或多個(gè)可選Web服務(wù)實(shí)現(xiàn),并且使用來(lái)自這一WSDL文檔的信息,獲得針對(duì)一或多個(gè)可選Web服務(wù)實(shí)現(xiàn)中每一可選Web服務(wù)實(shí)現(xiàn)的一個(gè)WSDL文檔,以處理該請(qǐng)求。
作為選項(xiàng),可以把一個(gè)安全策略應(yīng)用于請(qǐng)求。例如,如使用Web服務(wù)安全協(xié)議(Web Services Security Protocol(WS-Security))或其它信息加以指示的,可以至少對(duì)請(qǐng)求的一部分進(jìn)行加密,和/或可以把一個(gè)客戶機(jī)密鑰添加到該請(qǐng)求,和/或基于請(qǐng)求的安全屬性選擇用于發(fā)送請(qǐng)求的傳輸機(jī)制。例如,客戶機(jī)密鑰可以為一個(gè)諸如客戶機(jī)標(biāo)識(shí)符或用戶標(biāo)識(shí)符的標(biāo)識(shí)符。例如,客戶機(jī)密鑰還可以包括口令。
作為選項(xiàng),也可以把例如,客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)客戶機(jī)密鑰、一個(gè)機(jī)器標(biāo)識(shí)符、和/或客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)IP地址的客戶機(jī)專用信息添加到請(qǐng)求。例如,Web服務(wù)實(shí)現(xiàn)可以把這樣的信息用于審計(jì)或安全目的。
例如,策略數(shù)據(jù)可以指定下列一或多種情況響應(yīng)時(shí)間要求、安全水平要求、交易要求、開(kāi)銷要求、可用性要求、應(yīng)用層協(xié)議要求、附加信息要求、以及Web服務(wù)實(shí)現(xiàn)要求。
現(xiàn)在,將參照附圖中所說(shuō)明的本發(fā)明的優(yōu)先實(shí)施例,僅以舉例的方式,描述本發(fā)明。在這些附圖中圖1是其中有利于應(yīng)用本發(fā)明的優(yōu)選實(shí)施例的一個(gè)數(shù)據(jù)處理環(huán)境的結(jié)構(gòu)圖;圖2是一個(gè)示意圖,描述了從一個(gè)客戶機(jī)進(jìn)程向一個(gè)根據(jù)現(xiàn)有技術(shù)的Web服務(wù)發(fā)送一個(gè)請(qǐng)求的Web客戶機(jī)的實(shí)例;圖3是一個(gè)示意圖,描述了從一個(gè)客戶機(jī)進(jìn)程向一個(gè)根據(jù)本發(fā)明的優(yōu)選實(shí)施例的Web服務(wù)發(fā)送一個(gè)請(qǐng)求的Web客戶機(jī)的實(shí)例;圖4是處理源于一個(gè)Web客戶機(jī)的請(qǐng)求的圖3的客戶機(jī)端入站的一個(gè)示意圖;圖5是圖3的一個(gè)客戶機(jī)數(shù)據(jù)處理主機(jī)的主要處理步驟的流程圖;以及圖6是圖3的客戶機(jī)端入站的主要處理步驟的一個(gè)流程圖。
注意,在這些圖中,使用相同的數(shù)字表示相同的部件。
具體實(shí)施例方式
圖1是其中可有利地應(yīng)用本發(fā)明的優(yōu)選實(shí)施例的一個(gè)數(shù)據(jù)處理環(huán)境的示意圖。在圖1中,經(jīng)由網(wǎng)絡(luò)11,例如網(wǎng)絡(luò)11可以為Internet,把一個(gè)客戶機(jī)/服務(wù)器數(shù)據(jù)處理主機(jī)10連接到其它客戶機(jī)/服務(wù)器數(shù)據(jù)處理主機(jī)12和13。例如,根據(jù)本發(fā)明,一個(gè)運(yùn)行在主機(jī)10上的Web客戶機(jī)可以向主機(jī)12中的一個(gè)可用Web服務(wù)發(fā)出請(qǐng)求,但運(yùn)行在該客戶機(jī)中的軟件把該請(qǐng)求轉(zhuǎn)換為到基于與該Web客戶機(jī)相關(guān)的一個(gè)策略數(shù)據(jù)所選擇的主機(jī)13中的一個(gè)Web服務(wù)的請(qǐng)求??蛻魴C(jī)/服務(wù)器10具有一個(gè)用于執(zhí)行程序的處理器101,這些程序控制客戶機(jī)/服務(wù)器10、RAM易失性存儲(chǔ)器元件102、非易失存儲(chǔ)器103以及用于與網(wǎng)絡(luò)11連接以與其它客戶機(jī)/服務(wù)器12和13進(jìn)行通信的網(wǎng)絡(luò)連接器104的操作。
圖2是一個(gè)示意圖,示出了根據(jù)現(xiàn)有技術(shù)向Web服務(wù)實(shí)現(xiàn)211發(fā)送一個(gè)請(qǐng)求208的Web客戶機(jī)201的示例。Web客戶機(jī)和Web服務(wù)分別運(yùn)行在數(shù)據(jù)處理主機(jī)200和210中,各使用一個(gè)TCP/IP協(xié)議堆棧。
在圖2中,Web客戶機(jī)請(qǐng)求指向URL http//www.banka.com/(209)處的一個(gè)銀行服務(wù)的銀行服務(wù)業(yè)務(wù)。Web客戶機(jī)201把該請(qǐng)求傳遞(205)給協(xié)議堆棧的應(yīng)用層202。該應(yīng)用層提供了高級(jí)協(xié)議,例如,通過(guò)該高級(jí)協(xié)議,Web客戶機(jī)/服務(wù)可以訪問(wèn)TCP/IP協(xié)議堆棧,在這一示例中,應(yīng)用層提供了基于超文本傳輸協(xié)議(Hypertext Transfer Protocol(HTTP))的簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol(SOAP))。作為選擇,例如,應(yīng)用層也可以提供因特網(wǎng)ORB間協(xié)議(Internet Inter-Orb Protocol(IIOP))。應(yīng)用層202修改請(qǐng)求,然后將其傳遞(206)到傳輸與網(wǎng)絡(luò)層203。傳輸與網(wǎng)絡(luò)層提供網(wǎng)絡(luò)上的數(shù)據(jù)傳送,在這一示例中,這一層提供了對(duì)基于因特網(wǎng)協(xié)議(IP)的傳輸控制協(xié)議(TCP)的支持。作為替代,例如,傳輸與網(wǎng)絡(luò)層也可以提供用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol(UDP))。然后,傳輸與網(wǎng)絡(luò)層203可以修改請(qǐng)求,并且將其傳遞(207)給網(wǎng)絡(luò)接口層204,網(wǎng)絡(luò)接口層204與客戶機(jī)硬件接合,并且在網(wǎng)絡(luò)11上傳輸請(qǐng)求208。
當(dāng)請(qǐng)求到達(dá)Web服務(wù)實(shí)現(xiàn)的主機(jī)210時(shí),通過(guò)網(wǎng)絡(luò)接口層214接收這一請(qǐng)求,網(wǎng)絡(luò)接口層214把請(qǐng)求傳遞(215)給提供了TCP/IP支持的傳輸與網(wǎng)絡(luò)層213。該傳輸與網(wǎng)絡(luò)層撤銷客戶機(jī)網(wǎng)絡(luò)與傳輸層中對(duì)消息所做的改變,然后將其傳遞(216)給提供了SOAP/HTTP支持的應(yīng)用層212。接下來(lái),應(yīng)用層撤銷客戶機(jī)應(yīng)用層中對(duì)請(qǐng)求所做的改變,并且將其傳遞(217)給目標(biāo)Web服務(wù)實(shí)現(xiàn)211。從而,接收了請(qǐng)求用于處理。注意,為了成功地處理Web客戶機(jī)請(qǐng)求,Web服務(wù)協(xié)議堆棧必須提供對(duì)和用于客戶機(jī)堆棧的相同協(xié)議(即SOAP/HTTP和TCP/IP)的支持。
然而,圖2的現(xiàn)有技術(shù)的一個(gè)問(wèn)題是,Web客戶機(jī)是使用其請(qǐng)求所指向的Web服務(wù)實(shí)現(xiàn)的URL(http//www.banka.com)來(lái)進(jìn)行硬件編碼的。因此,例如,客戶機(jī)不能利用可基于與Web客戶機(jī)相關(guān)的策略數(shù)據(jù)選擇一個(gè)Web服務(wù)實(shí)現(xiàn)來(lái)處理該請(qǐng)求的服務(wù)總線。
圖3是已根據(jù)發(fā)明的優(yōu)選實(shí)施例對(duì)其加以修改的圖2的客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)示意圖。在這一實(shí)施例中,TCP/IP層還包括對(duì)SOCKS的支持305。在正常使用的情況下,對(duì)SOCKS進(jìn)行配置,以把一個(gè)Web客戶機(jī)請(qǐng)求重新路由到一個(gè)SOCKS代理(或服務(wù)器),然后,在允許Web客戶機(jī)請(qǐng)求前進(jìn)到請(qǐng)求中所指定的目標(biāo)之前,SOCKS代理執(zhí)行某一級(jí)別的安全檢查。然而,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,對(duì)SOCKS支持305進(jìn)行配置,以把一個(gè)Web客戶機(jī)請(qǐng)求重新路由到一個(gè)適當(dāng)?shù)膶?duì)客戶機(jī)來(lái)說(shuō)是本地的SOCKS代理306。因此,當(dāng)把Web客戶機(jī)請(qǐng)求傳遞給TCP/IP傳輸與網(wǎng)絡(luò)層203時(shí),調(diào)用SOCKS支持305,這把請(qǐng)求重新指向(322)對(duì)于客戶機(jī)來(lái)說(shuō)適用于本地的SOCKS代理306,接下來(lái),適用于本地的SOCKS代理306把請(qǐng)求傳遞(323)到一個(gè)URL過(guò)濾器307。該URL過(guò)濾器使用配置文件檢查被指定為Web客戶機(jī)請(qǐng)求的目標(biāo)的URL,其中,該配置文件包括用于決定被指定為Web客戶機(jī)請(qǐng)求的目標(biāo)是否適合于修改的細(xì)節(jié)。例如,配置文件可以包含要求為嚴(yán)格匹配的特定URL的一個(gè)列表,或要求其為類似匹配的包含通配符的URL的一個(gè)列表。如果URL不適合于修改,則把Web客戶機(jī)請(qǐng)求返回(未示出)到TCP/IP傳輸與網(wǎng)絡(luò)層203,以進(jìn)行正常處理。然而,如果URL適合于修改,則把請(qǐng)求傳遞(324)到SOAP/HTTP句法分析器308,SOAP/HTTP句法分析器308可以提取信息,例如,任何伴隨Web客戶機(jī)請(qǐng)求中的URL的數(shù)據(jù)。在已經(jīng)提取了所需的信息之后,把請(qǐng)求傳遞(325)到客戶機(jī)端入站309,然后客戶機(jī)端入站309修改該請(qǐng)求使其適合于傳遞到使用各種協(xié)議提供了對(duì)各種Web服務(wù)實(shí)現(xiàn)訪問(wèn)的一個(gè)服務(wù)總線。根據(jù)圖3的優(yōu)選實(shí)施例,可用于客戶機(jī)的服務(wù)總線,提供了對(duì)使用了IIOP 310和SOCKS代理311這兩種協(xié)議組合之一的Web服務(wù)實(shí)現(xiàn)的訪問(wèn),客戶機(jī)端入站修改Web客戶機(jī)請(qǐng)求,使其要求經(jīng)由服務(wù)總線可用的、并使用一個(gè)IIOP請(qǐng)求的替代Web服務(wù)實(shí)現(xiàn)。因此,客戶機(jī)端入站309把對(duì)該替代Web服務(wù)實(shí)現(xiàn)的請(qǐng)求傳遞(326)到IIOP應(yīng)用層310,然后IIOP應(yīng)用層310把其傳遞(327)給TCP/IP傳輸與網(wǎng)絡(luò)層203,以通過(guò)網(wǎng)絡(luò)接口層204傳遞(328)給網(wǎng)絡(luò),以在網(wǎng)絡(luò)上發(fā)送。
圖4是圖3的客戶機(jī)端入站以及與其接口的各部件,即服務(wù)總線的SOAP/HTTP句法分析器308、SOAP/HTTP 310與IIOP 311應(yīng)用層的一個(gè)更詳細(xì)的示意圖。把Web客戶機(jī)請(qǐng)求從SOAP/HTTP句法分析器傳遞給客戶機(jī)端入站309的一個(gè)匹配引擎401。匹配引擎查找策略文件402中針對(duì)Web客戶機(jī)所指定的策略。例如,策略文件可以包括針對(duì)響應(yīng)時(shí)間要求、安全水平要求、交易要求、開(kāi)銷要求、可得性要求、應(yīng)用層協(xié)議要求、附加信息要求、和/或Web服務(wù)實(shí)現(xiàn)要求的客戶機(jī)的細(xì)節(jié)。然后,匹配引擎利用SOAP/HTTP句法分析器從Web客戶機(jī)請(qǐng)求所抽取的策略信息和請(qǐng)求信息,使用發(fā)現(xiàn)機(jī)制403、選擇機(jī)制404以及安全405機(jī)制,修改請(qǐng)求。發(fā)現(xiàn)機(jī)制403用于發(fā)現(xiàn)可用于服務(wù)總線上的可選Web服務(wù)實(shí)現(xiàn),并且能夠處理Web客戶機(jī)請(qǐng)求,例如根據(jù)請(qǐng)求中所指定的URL處理Web客戶機(jī)請(qǐng)求。然后,把選擇機(jī)制404用于從所發(fā)現(xiàn)的Web服務(wù)實(shí)現(xiàn)中選擇一個(gè)特定的Web服務(wù)實(shí)現(xiàn)。所選擇的那個(gè)Web服務(wù)實(shí)現(xiàn)將與策略文件中所指定的要求密切匹配。選擇機(jī)制還可以從服務(wù)總線中可用的協(xié)議中選擇一個(gè)合適的協(xié)議,并且把這一適合的協(xié)議用于訪問(wèn)Web服務(wù)實(shí)現(xiàn)。安全機(jī)制405也可用于選擇目的,例如,選擇與客戶機(jī)或Web服務(wù)的安全要求相匹配的一個(gè)適合的協(xié)議。例如,客戶機(jī)或Web服務(wù)實(shí)現(xiàn)可以要求通過(guò)一個(gè)更安全的協(xié)議,例如基于SOAP的WS-Security、安全HTTP(HTTPS)、或安全I(xiàn)IOP(IIOPS)的通信,另外,例如,安全機(jī)制還可以基于Web客戶機(jī)或Web服務(wù)實(shí)現(xiàn)的安全要求,使用SOAP加密對(duì)消息進(jìn)行加密,和/或向諸如客戶機(jī)請(qǐng)求添加信息,例如客戶機(jī)密鑰。在這一優(yōu)選實(shí)施例中,由于使用了這些機(jī)制,匹配引擎401選擇一個(gè)適當(dāng)?shù)腤eb服務(wù)處理Web客戶機(jī)請(qǐng)求,并且將其提供給適當(dāng)?shù)膫鬏攨f(xié)議,例如分別用311和310表示的SOAP/HTTP或IIOP,。
注意,例如,策略文件可以包含下列一或多個(gè)內(nèi)容響應(yīng)時(shí)間要求,其要求使用給出一段確保的響應(yīng)時(shí)間的一個(gè)較快的傳輸協(xié)議或Web服務(wù);安全水平要求,其要求對(duì)請(qǐng)求進(jìn)行加密,或者使用一種安全策略,例如HTTP;開(kāi)銷要求,其指定Web服務(wù)所提供的貨物的最大價(jià)格范圍,或?qū)σ粋€(gè)提供最低開(kāi)銷連接的通信協(xié)議的使用;可用性要求,其要求使用提供了24×7可用的Web服務(wù),或使用可確保請(qǐng)求的遞送的協(xié)議,例如使用可進(jìn)行交易的JMS;應(yīng)用層協(xié)議要求,其指定必須用于或必須不用于發(fā)送請(qǐng)求的一或多個(gè)應(yīng)用層協(xié)議;附加信息要求,其要求將客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)IP地址和/或機(jī)器標(biāo)識(shí)符添加到該請(qǐng)求;以及Web服務(wù)實(shí)現(xiàn)要求,例如其要求接受AmericanExpress支付方式的IBM批準(zhǔn)的經(jīng)銷商或美國(guó)經(jīng)銷商所提供的一個(gè)Web服務(wù)實(shí)現(xiàn)。
至此,已經(jīng)描述了其中攔截和轉(zhuǎn)換了一個(gè)Web客戶機(jī)請(qǐng)求的本發(fā)明的一個(gè)優(yōu)選實(shí)施例。請(qǐng)求的轉(zhuǎn)換包括改變向其發(fā)送請(qǐng)求的Web服務(wù),并且有選擇地改變諸如用于發(fā)送請(qǐng)求的應(yīng)用層協(xié)議、用于請(qǐng)求的安全策略、或添加到請(qǐng)求的信息等。然而,存在著很多可替代所描述的實(shí)施例的替代實(shí)施例。
例如,參照?qǐng)D3,在所描述的實(shí)施例中,Web客戶機(jī)使用了SOAP/HTTP應(yīng)用層202。然而,在一個(gè)替代實(shí)施例中,例如,其可以為IIOP、IIOPS、HTTP、HTTPS、基于JMS的SOAP、基于IIOP上的遠(yuǎn)程方法調(diào)用(RMI)、基于Java消息服務(wù)(JMS)的XML、基于簡(jiǎn)單郵件傳輸協(xié)議(SMTP)的SOAP、或企業(yè)Java Beans(EJB)(Java Beans為Sun MicroSystem的一個(gè)注冊(cè)商標(biāo))。例如,如果應(yīng)用層為IIOP。則將以IIOP句法分析器取代SOAP/HTTP句法分析器308。
另外,例如,參照?qǐng)D3,在所描述的實(shí)施例中,由SOCKS支持305在傳輸與網(wǎng)絡(luò)層203中攔截Web客戶機(jī)請(qǐng)求。然而,在一個(gè)替代實(shí)施例中,可以由不同的裝置實(shí)現(xiàn)這一攔截。例如,可以對(duì)HTTP層進(jìn)行配置,以調(diào)用一個(gè)本地HTTP代理,從而能夠以該HTTP代理取代SOCKS服務(wù)器306,并且把對(duì)Web客戶機(jī)請(qǐng)求的攔截改變至SOCK/HTTP應(yīng)用層(202)中。
另外,例如,參照?qǐng)D3,在所描述的實(shí)施例中,客戶機(jī)端入站309能夠使用一個(gè)提供了用于發(fā)送請(qǐng)求的IIOP 310或SOAP/HTTP 311的應(yīng)用層協(xié)議的服務(wù)總線。在另一個(gè)實(shí)施例中,可以省略這些應(yīng)用層協(xié)議中的一或多個(gè),和/或替代這些應(yīng)用層協(xié)議中的一或多個(gè)或向這些應(yīng)用層協(xié)議添加一或多個(gè)應(yīng)用層協(xié)議。例如,服務(wù)總線所提供的其它附加/替代層,可以為IIOP、IIOPS、HTTP、HTTPS、基于JMS的SOAP、基于IIOP的RMI、基于JMS的XML、基于SMTP的SOAP、或EJB。另外,還能夠改變可用于這些應(yīng)用層協(xié)議的傳輸與網(wǎng)絡(luò)層協(xié)議,和/或向這些應(yīng)用層協(xié)議添加傳輸與網(wǎng)絡(luò)層協(xié)議,例如除了TCP/IP,UDP/IP也可用。
仍參照?qǐng)D4,例如,當(dāng)發(fā)現(xiàn)機(jī)制403發(fā)現(xiàn)一或多個(gè)能夠把客戶機(jī)請(qǐng)求指向其的可選Web服務(wù)實(shí)現(xiàn)時(shí),可以根據(jù)Web定義語(yǔ)言(WSDL)文檔實(shí)現(xiàn)這一指向。如果客戶機(jī)使用一個(gè)WSDL文檔獲得客戶機(jī)向其進(jìn)行請(qǐng)求的目標(biāo)服務(wù)實(shí)現(xiàn)的定義,則這樣做是可能的。在這種情況下,在攔截了請(qǐng)求之后,發(fā)現(xiàn)機(jī)制可以首先獲得目標(biāo)服務(wù)WSDL文檔,然后,基于該WSDL中的信息,例如,從一個(gè)通用描述、發(fā)現(xiàn)與集成(UDDI)注冊(cè)表中獲得針對(duì)適當(dāng)替代Web服務(wù)實(shí)現(xiàn)的WSDL文檔。注意,WSDL文檔包括目標(biāo)服務(wù)的細(xì)節(jié),例如端口類型、連接情況、端口、消息、類型等。端口類型定義了目標(biāo)服務(wù)所提供的操作和操作參數(shù),連接情況指定傳輸機(jī)制,端口指定使用傳送機(jī)制提供對(duì)目標(biāo)服務(wù)進(jìn)行訪問(wèn)的通道的端點(diǎn)地址。例如,作為選擇,也可以使用DARPA代理標(biāo)簽語(yǔ)言(DAML)服務(wù)文檔取代WSDL文檔。
另外,例如,參照?qǐng)D4,在所描述的優(yōu)選實(shí)施例中,匹配引擎使用發(fā)現(xiàn)、選擇和安全機(jī)制來(lái)轉(zhuǎn)換請(qǐng)求。在一個(gè)可選實(shí)施例中,可以省略這些機(jī)制中的一或多個(gè)機(jī)制,和/或取代這些機(jī)制中的一或多個(gè),和/或把這些機(jī)制中的一或多個(gè)機(jī)制添加到和/或封裝到匹配引擎。例如,附加或替代機(jī)制可以通過(guò)把來(lái)自Web客戶機(jī)的一或多個(gè)請(qǐng)求囊括在一個(gè)工作單元中,提供交易能力。而且,例如,也可以把客戶機(jī)策略數(shù)據(jù)封裝于這些機(jī)制中或者應(yīng)用隨機(jī)策略。另外,也可以把Web客戶機(jī)請(qǐng)求直接傳遞給匹配引擎,而無(wú)需首先進(jìn)行句法分析,而且作為選擇,當(dāng)需要時(shí),匹配引擎也可以調(diào)用句法分析器。
圖5是本發(fā)明的優(yōu)選實(shí)施例中主要步驟的流程圖。在步驟501,攔截Web客戶機(jī)請(qǐng)求。在步驟502,獲得指定為Web客戶機(jī)請(qǐng)求的目標(biāo)的URL,在步驟503,進(jìn)行檢查,以觀察在配置文件中是否把URL列為適合于由客戶機(jī)端入站(圖3的309)加以轉(zhuǎn)換的URL。如果該URL不適合于轉(zhuǎn)換,則在步驟504把Web客戶機(jī)請(qǐng)求發(fā)送到目標(biāo)URL。然而,如URL適合于轉(zhuǎn)換,則在步驟505對(duì)Web客戶機(jī)請(qǐng)求進(jìn)行句法分析,以獲得諸如隨請(qǐng)求所發(fā)送的任何參數(shù)的附加信息,例如把請(qǐng)求指向其的Web服務(wù)的某一特定方面的細(xì)節(jié),或者一個(gè)描述把請(qǐng)求指向其的Web服務(wù)的WSDL文檔的細(xì)節(jié)。然后,在步驟506,基于客戶機(jī)策略數(shù)據(jù)對(duì)Web客戶機(jī)請(qǐng)求進(jìn)行修改。例如,把請(qǐng)求重新指向提供了與原始請(qǐng)求的服務(wù)相同,但根據(jù)公司策略數(shù)據(jù)允許客戶機(jī)加以使用的Web服務(wù)。一旦已修改了請(qǐng)求,則接下來(lái)在步驟504將其發(fā)送到已把請(qǐng)求重新指向其的Web服務(wù)。
圖6是在圖5的步驟506處執(zhí)行處理的一個(gè)更詳細(xì)的流程圖。在步驟601,從配置文件獲得針對(duì)客戶機(jī)的策略數(shù)據(jù),并且在步驟602,使用發(fā)現(xiàn)機(jī)制發(fā)現(xiàn)適合的處理Web客戶機(jī)請(qǐng)求的替代Web服務(wù)實(shí)現(xiàn)。例如,可以基于URL和Web客戶機(jī)請(qǐng)求中所指定的任何附加數(shù)據(jù),發(fā)現(xiàn)替代Web服務(wù)實(shí)現(xiàn)。另外,發(fā)現(xiàn)機(jī)制也可以使用策略數(shù)據(jù)。在步驟603,使用一個(gè)選擇機(jī)制,從適當(dāng)?shù)奶娲鶺eb服務(wù)實(shí)現(xiàn)的所發(fā)現(xiàn)的列表中選擇一個(gè)處理請(qǐng)求的Web服務(wù)實(shí)現(xiàn)。例如,可以基于指定Web服務(wù)必須是基于英國(guó)的,并且必須提供AmericanExpress付款方式的客戶機(jī)策略數(shù)據(jù),選擇一個(gè)Web服務(wù)。選擇機(jī)制還可以選擇一個(gè)用于發(fā)送請(qǐng)求的應(yīng)用層協(xié)議,即根據(jù)可以從服務(wù)總線得到、并且通過(guò)其可以接觸所選擇的Web服務(wù)實(shí)現(xiàn)的應(yīng)用層協(xié)議進(jìn)行這一選擇。已經(jīng)選擇了一個(gè)Web服務(wù)之后,在步驟604,使用一個(gè)安全機(jī)制向請(qǐng)求施加一個(gè)適當(dāng)?shù)陌踩呗?,例如所選擇的Web服務(wù)可能要求對(duì)所有通信進(jìn)行加密,和/或使用一個(gè)安全的應(yīng)用層協(xié)議。在步驟605,作為選擇,也可以把客戶機(jī)專用信息添加給請(qǐng)求,例如,所添加的是一個(gè)諸如IP地址或機(jī)器的用于標(biāo)識(shí)客戶機(jī)數(shù)據(jù)處理主機(jī)的標(biāo)識(shí)符,或者是一個(gè)可以用于標(biāo)識(shí)Web客戶機(jī)或Web客戶機(jī)用戶的標(biāo)識(shí)符。最后在步驟606,把所轉(zhuǎn)換的請(qǐng)求提供給適當(dāng)?shù)膽?yīng)用層協(xié)議,例如IIOP或SOAP/HTTP。例如,可以選擇請(qǐng)求協(xié)議,以和所選擇的Web服務(wù)的協(xié)議相匹配,或者基于例如指定了一個(gè)所需響應(yīng)時(shí)間的客戶機(jī)策略從由所選擇的Web服務(wù)所支持的多個(gè)協(xié)議中選擇請(qǐng)求協(xié)議。
注意,盡管以通用術(shù)語(yǔ)描述了本發(fā)明的優(yōu)先實(shí)施例,但本領(lǐng)域的技術(shù)人員將會(huì)意識(shí)到,本發(fā)明可以體現(xiàn)于數(shù)據(jù)處理方法、數(shù)據(jù)處理設(shè)備、或包括用于執(zhí)行數(shù)據(jù)處理方法的指令的計(jì)算機(jī)程序產(chǎn)品。
本發(fā)明提供了一種在其中攔截對(duì)Web服務(wù)的客戶機(jī)請(qǐng)求和根據(jù)與客戶機(jī)相關(guān)的策略數(shù)據(jù)更新請(qǐng)求的目標(biāo)的方法、設(shè)備、以及計(jì)算機(jī)程序產(chǎn)品。另外,還可以改變?cè)谄渲兄付╓eb客戶機(jī)請(qǐng)求的應(yīng)用層協(xié)議,和/或把信息添加到請(qǐng)求。因此,可以發(fā)出請(qǐng)求,而針對(duì)這一請(qǐng)求對(duì)目標(biāo)Web服務(wù)進(jìn)行硬件編碼的Web客戶機(jī)適合于利用對(duì)Web服務(wù)的可管理的訪問(wèn),從而導(dǎo)致對(duì)諸如提供可更好與Web客戶機(jī)的要求相匹配的服務(wù)質(zhì)量特性的Web服務(wù)的訪問(wèn)。
權(quán)利要求
1.一種轉(zhuǎn)換Web客戶機(jī)請(qǐng)求的客戶機(jī)數(shù)據(jù)處理方法,該方法包括攔截請(qǐng)求;把請(qǐng)求中所指定的一個(gè)第一Web服務(wù)實(shí)現(xiàn)改變?yōu)橐粋€(gè)第二Web服務(wù)實(shí)現(xiàn);以及把請(qǐng)求轉(zhuǎn)發(fā)到第二Web服務(wù)實(shí)現(xiàn),從而可使第二Web服務(wù)實(shí)現(xiàn)處理該請(qǐng)求,其中,根據(jù)與Web客戶機(jī)相關(guān)的策略數(shù)據(jù)選擇第二Web服務(wù)實(shí)現(xiàn)。
2.根據(jù)權(quán)利要求1所述的方法,其中,在第一應(yīng)用層協(xié)議中指定請(qǐng)求,該方法還包括下列步驟修改在第二應(yīng)用層協(xié)議中指定的請(qǐng)求。
3.根據(jù)權(quán)利要求1或權(quán)利要求2所述的方法,其中,客戶機(jī)數(shù)據(jù)處理主機(jī)包括SOCKS代理,攔截請(qǐng)求的步驟包括調(diào)用SOCKS代理,并包括請(qǐng)求的調(diào)用細(xì)節(jié)。
4.根據(jù)權(quán)利要求1或權(quán)利要求2所述的方法,其中,客戶機(jī)數(shù)據(jù)處理主機(jī)包括HTTP代理,攔截請(qǐng)求的步驟包括調(diào)用HTTP代理,并包括請(qǐng)求的調(diào)用細(xì)節(jié)。
5.根據(jù)以上權(quán)利要求中任何一個(gè)權(quán)利要求所述的方法,還包括下列步驟發(fā)現(xiàn)一或多個(gè)處理請(qǐng)求的可選Web服務(wù)實(shí)現(xiàn);以及從一或多個(gè)所發(fā)現(xiàn)的可選Web服務(wù)實(shí)現(xiàn)中選擇第二Web服務(wù)實(shí)現(xiàn)。
6.根據(jù)權(quán)利要求5所述的方法,其中發(fā)現(xiàn)步驟包括下列步驟獲得針對(duì)第一Web服務(wù)實(shí)現(xiàn)的一個(gè)第一Web服務(wù)實(shí)現(xiàn)Web服務(wù)定義語(yǔ)言(WSDL)文檔;以及使用來(lái)自這一第一Web服務(wù)實(shí)現(xiàn)的WSDL文檔的信息,獲得針對(duì)一或多個(gè)可選Web服務(wù)實(shí)現(xiàn)中每一可選Web服務(wù)實(shí)現(xiàn)的一個(gè)WSDL文檔。
7.根據(jù)以上權(quán)利要求中任何一個(gè)權(quán)利要求所述的方法,還包括下列步驟把一個(gè)安全策略施加于請(qǐng)求;其中,施加安全策略的步驟包括下列一或多個(gè)步驟至少對(duì)請(qǐng)求的一部分進(jìn)行加密;把一個(gè)Web客戶機(jī)密鑰添加到請(qǐng)求;以及使用一個(gè)Web服務(wù)安全協(xié)議發(fā)送請(qǐng)求。
8.根據(jù)以上權(quán)利要求中任何一個(gè)權(quán)利要求所述的方法,還包括下列步驟添加客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)IP地址;添加客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)機(jī)器標(biāo)識(shí)符;添加一個(gè)Web客戶機(jī)密鑰。
9.根據(jù)以上權(quán)利要求中任何一個(gè)權(quán)利要求所述的方法,其中,策略數(shù)據(jù)指定下列一或多個(gè)內(nèi)容一個(gè)響應(yīng)時(shí)間要求、一個(gè)安全水平要求、一個(gè)交易要求、一個(gè)開(kāi)銷要求、一個(gè)可得性要求、一個(gè)應(yīng)用層協(xié)議要求、一個(gè)附加信息要求、以及一個(gè)Web服務(wù)實(shí)現(xiàn)要求。
10.一種用于轉(zhuǎn)換Web客戶機(jī)請(qǐng)求的客戶機(jī)數(shù)據(jù)處理設(shè)備,該設(shè)備包括用于攔截請(qǐng)求的裝置;用于把請(qǐng)求中所指定的一個(gè)第一Web服務(wù)實(shí)現(xiàn)改變?yōu)橐粋€(gè)第二Web服務(wù)實(shí)現(xiàn)的裝置;以及用于把請(qǐng)求轉(zhuǎn)發(fā)到第二Web服務(wù)實(shí)現(xiàn),從而可使第二Web服務(wù)實(shí)現(xiàn)處理該請(qǐng)求的裝置,其中,可操作用于改變一個(gè)第一Web服務(wù)實(shí)現(xiàn)的裝置,以根據(jù)與Web客戶機(jī)相關(guān)的策略數(shù)據(jù)選擇第二Web服務(wù)實(shí)現(xiàn)。
11.根據(jù)權(quán)利要求10所述的設(shè)備,其中,在第一應(yīng)用層協(xié)議中指定請(qǐng)求,該設(shè)備還包括用于修改在第二應(yīng)用層協(xié)議中指定的請(qǐng)求的裝置。
12.根據(jù)權(quán)利要求10或權(quán)利要求11所述的設(shè)備,還包括一個(gè)SOCKS代理,可操作用于攔截請(qǐng)求的裝置,以調(diào)用SOCKS代理,并包括請(qǐng)求的調(diào)用細(xì)節(jié)。
13.根據(jù)權(quán)利要求10或權(quán)利要求11所述的設(shè)備,還包括一個(gè)HTTP代理,可操作用于攔截請(qǐng)求的裝置,以調(diào)用HTTP代理,并包括請(qǐng)求的調(diào)用細(xì)節(jié)。
14.根據(jù)權(quán)利要求10~13中任何一個(gè)權(quán)利要求所述的設(shè)備,還包括用于發(fā)現(xiàn)一或多個(gè)處理請(qǐng)求的可選Web服務(wù)實(shí)現(xiàn)的裝置;以及用于從一或多個(gè)所發(fā)現(xiàn)的可選Web服務(wù)實(shí)現(xiàn)中選擇第二Web服務(wù)實(shí)現(xiàn)的裝置。
15.根據(jù)權(quán)利要求14所述的設(shè)備,其中用于發(fā)現(xiàn)的裝置包括用于獲得針對(duì)第一Web服務(wù)實(shí)現(xiàn)的一個(gè)第一Web服務(wù)實(shí)現(xiàn)Web服務(wù)定義語(yǔ)言(WSDL)文檔的裝置;以及用于使用來(lái)自這一第一Web服務(wù)實(shí)現(xiàn)的WSDL文檔的信息,獲得針對(duì)一或多個(gè)可選Web服務(wù)實(shí)現(xiàn)中每一可選Web服務(wù)實(shí)現(xiàn)的一個(gè)WSDL文檔。
16.根據(jù)權(quán)利要求10~15中任何一個(gè)權(quán)利要求所述的設(shè)備,還包括用于把一個(gè)安全策略施加于請(qǐng)求的裝置還包括用于至少對(duì)請(qǐng)求的一部分進(jìn)行加密的裝置;用于把一個(gè)Web客戶機(jī)密鑰添加到請(qǐng)求的裝置;以及用于使用一個(gè)安全傳送機(jī)制發(fā)送請(qǐng)求的裝置。
17.根據(jù)權(quán)利要求10~16中任何一個(gè)權(quán)利要求所述的設(shè)備,還包括用于向請(qǐng)求添加專門針對(duì)客戶機(jī)的信息的裝置,包括以下的一或多個(gè)裝置用于添加客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)IP地址的裝置;用于添加客戶機(jī)數(shù)據(jù)處理主機(jī)的一個(gè)機(jī)器標(biāo)識(shí)符的裝置;用于添加一個(gè)Web客戶機(jī)密鑰的裝置。
18.根據(jù)權(quán)利要求10~17中任何一個(gè)權(quán)利要求所述的設(shè)備,其中,策略數(shù)據(jù)指定下列一或多個(gè)內(nèi)容一個(gè)響應(yīng)時(shí)間要求、一個(gè)安全水平要求、一個(gè)交易要求、一個(gè)開(kāi)銷要求、一個(gè)可得性要求、一個(gè)應(yīng)用層協(xié)議要求、一個(gè)附加信息要求、以及一個(gè)Web服務(wù)實(shí)現(xiàn)要求。
19.一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括一系列指令,當(dāng)在數(shù)據(jù)處理主機(jī)上執(zhí)行這些指令時(shí),可使數(shù)據(jù)處理主機(jī)執(zhí)行根據(jù)權(quán)利要求1~9中任何一個(gè)權(quán)利要求所述的方法。
全文摘要
本發(fā)明提供一種攔截對(duì)Web服務(wù)的客戶機(jī)請(qǐng)求和根據(jù)與客戶機(jī)相關(guān)的策略數(shù)據(jù)修改請(qǐng)求的目標(biāo)的方法、設(shè)備、以及計(jì)算機(jī)程序產(chǎn)品。另外,還可以改變其中指定Web客戶機(jī)請(qǐng)求的應(yīng)用層協(xié)議。因此,可以發(fā)出請(qǐng)求,而針對(duì)這一請(qǐng)求對(duì)目標(biāo)Web服務(wù)進(jìn)行硬件編碼的Web客戶機(jī)適合于利用對(duì)Web服務(wù)的可管理的訪問(wèn),從而導(dǎo)致對(duì)諸如提供可更好與Web客戶機(jī)的要求相匹配的服務(wù)質(zhì)量特性的Web服務(wù)的訪問(wèn)。
文檔編號(hào)H04L29/12GK1692617SQ200380100715
公開(kāi)日2005年11月2日 申請(qǐng)日期2003年12月5日 優(yōu)先權(quán)日2003年3月15日
發(fā)明者保羅·Z·弗里曼特爾, 伊麗莎白·A·哈欽森 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司