国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Tuscany SCA遠(yuǎn)程訪問(wèn)web service

2014-08-16 09:20:43
宿州學(xué)院學(xué)報(bào) 2014年11期
關(guān)鍵詞:調(diào)用過(guò)濾器代碼

唐 青

福建衛(wèi)生職業(yè)技術(shù)學(xué)院信息技術(shù)教研室,福建福州,350101

基于Tuscany SCA遠(yuǎn)程訪問(wèn)web service

唐 青

福建衛(wèi)生職業(yè)技術(shù)學(xué)院信息技術(shù)教研室,福建福州,350101

以基金銷(xiāo)售系統(tǒng)中代銷(xiāo)機(jī)構(gòu)交收資金明細(xì)查詢(xún)功能為例,討論了利用Tuscany SCA訪問(wèn)遠(yuǎn)程web service的實(shí)現(xiàn)過(guò)程。這個(gè)過(guò)程使用servlet與Tuscany SCA構(gòu)件相結(jié)合技術(shù),通過(guò)建立web構(gòu)件、servlet程序及配置servlet過(guò)濾器,實(shí)現(xiàn)了基于SCA的遠(yuǎn)程調(diào)用web服務(wù)。利用這種方法實(shí)現(xiàn)調(diào)用遠(yuǎn)程服務(wù),易于理解且實(shí)現(xiàn)相對(duì)簡(jiǎn)單。

SCA web服務(wù);遠(yuǎn)程調(diào)用;servlet

當(dāng)今,在分布式應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者常需要遠(yuǎn)程訪問(wèn)后臺(tái)系統(tǒng)或者第三方系統(tǒng)提供的web service??蛻?hù)端訪問(wèn)web service方法有很多,常見(jiàn)的有利用JDK中web服務(wù)API調(diào)用web service,利用Apache CXF、Axis2等一些開(kāi)源框架實(shí)現(xiàn)對(duì)web service遠(yuǎn)程調(diào)用。上述方法雖然較為成熟,但實(shí)現(xiàn)時(shí)需要編寫(xiě)的程序代碼較多,較為繁瑣。本文嘗試?yán)肁pache Tuscany SCA實(shí)現(xiàn)web service的遠(yuǎn)程調(diào)用。Apache Tuscany是一個(gè)開(kāi)源SOA基礎(chǔ)架構(gòu),主要用于服務(wù)構(gòu)件的開(kāi)發(fā)、組裝、發(fā)布和管理;另外,它也提供了一種輕量級(jí)遠(yuǎn)程服務(wù)調(diào)用方法。利用這種方法實(shí)現(xiàn)遠(yuǎn)程服務(wù)的調(diào)用,相對(duì)簡(jiǎn)單且易于理解。

1 基于Tuscany SCA的遠(yuǎn)程服務(wù)調(diào)用框架

為了更好地闡述這種調(diào)用遠(yuǎn)程服務(wù)的方法,以基金銷(xiāo)售系統(tǒng)代銷(xiāo)機(jī)構(gòu)交收資金明細(xì)查詢(xún)功能為例,詳細(xì)介紹利用Tuscany SCA進(jìn)行遠(yuǎn)程web service訪問(wèn)的實(shí)現(xiàn)過(guò)程。如圖1所示,該功能在實(shí)現(xiàn)過(guò)程中需要通過(guò)web service方式訪問(wèn)后臺(tái)清算子系統(tǒng)提供的Clearing Service,查詢(xún)獲得代銷(xiāo)機(jī)構(gòu)交收資金明細(xì)數(shù)據(jù)。

圖1 采用web service方式訪問(wèn)后臺(tái)清算子系統(tǒng)提供的Clearing Service

基于Tuscany SCA實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用的基本原理,使用servlet與Tuscany SCA服務(wù)構(gòu)件結(jié)合技術(shù)。Tuscany SCA 允許將Java EE規(guī)范中web模塊(servlet)擴(kuò)展為符合SCA規(guī)范要求的服務(wù)組件,這樣,web瀏覽器通過(guò)調(diào)用servlet就可以輕松地訪問(wèn)遠(yuǎn)程的web service。這種方式簡(jiǎn)化了web服務(wù)器調(diào)用遠(yuǎn)程服務(wù)的開(kāi)發(fā),同時(shí)使開(kāi)發(fā)者將現(xiàn)有的servlet和SCA服務(wù)結(jié)合起來(lái),大大提高了代碼的復(fù)用度。如圖2為基于SCA調(diào)用遠(yuǎn)程服務(wù)的過(guò)程框架圖。

2 實(shí)現(xiàn)方式的主要步驟

為了實(shí)現(xiàn)基于Tuscany SCA遠(yuǎn)程訪問(wèn)web service,除開(kāi)發(fā)一個(gè)用于用戶(hù)交互的JSP網(wǎng)頁(yè)外,還需要完成以下主要任務(wù):(1)基于Tuscany SCA,配置一個(gè)Web構(gòu)件,利用該構(gòu)件,引用遠(yuǎn)程服務(wù)ClearingService;(2)建立實(shí)現(xiàn)查詢(xún)功能的servlet;(3)配置TuscanyServletFilter過(guò)濾器。

2.1 配置web構(gòu)件

客戶(hù)端的jsp頁(yè)面在servlet程序順利調(diào)用遠(yuǎn)程web Service之前,必須先配置一個(gè)如圖3所示的web構(gòu)件。

圖2 基于SCA的遠(yuǎn)程調(diào)用框架圖

Web構(gòu)件包括Web Client和Clearing Reference Component兩個(gè)服務(wù)組件。其中,Web Client組件用于將servlet擴(kuò)展為服務(wù)組件;Clearing Reference Component是標(biāo)準(zhǔn)的通過(guò)java類(lèi)來(lái)實(shí)現(xiàn)的服務(wù)組件,用于引用遠(yuǎn)程服務(wù)。

圖3 Web構(gòu)件圖

Tuscany SCA下web構(gòu)件的建立方法:通過(guò)在/META-INF/sca-deployables/目錄下新建web.composite文件。該文件定義了web構(gòu)件的組成。web.composite文件架構(gòu)內(nèi)容如下:

……

……

……

根據(jù)構(gòu)件圖和web.composite的架構(gòu)內(nèi)容,需要作如下說(shuō)明[1]:

(1)在web構(gòu)件中定義Web Client服務(wù)組件用來(lái)引用Clearing Reference服務(wù)。

(2)表明WebClient組件允許將servlet等作為服務(wù)的具體實(shí)現(xiàn),web-uri="",表明整個(gè)WAR代表一個(gè)SCA contribution,即整個(gè)站點(diǎn)是一個(gè)contribution,是Web Client組件的實(shí)現(xiàn)。

(3)在web構(gòu)件中定義了ClearingReference組件,該組件又定義了一個(gè)基于Web Service的引用Clearing Service。通過(guò)這個(gè)引用,便可以調(diào)用遠(yuǎn)程的共享服務(wù)“ClearingService”,在架構(gòu)代碼中為:

其中uri值表明了這個(gè)遠(yuǎn)程服務(wù)的uri地址。

2.2 建立servlet程序

建立一個(gè)servlet程序,通過(guò)它可以查找和使用基于SCA的web服務(wù)。但是,不同的servlet容器對(duì)SCA的支持程度不一致,有些容器完全支持SCA,有些容器部分支持SCA。對(duì)于完全支持SCA的容器,servlet代碼就可以使用@Reference注釋?zhuān)欢鴮?duì)于不完全支持SCA的容器,@Reference注釋不起作用,引用需要被設(shè)置在servlet的init()方法中[1]。

下面是基于上述兩種情況的代碼:

(1)servlet容器完全支持SCA的代碼寫(xiě)法,servlet使用@Reference注釋來(lái)查詢(xún)ClearingReference服務(wù)。

publicclassQuerySettlementServlet extends HttpServlet {

privatestaticfinallongserialVersionUID = 1L;

@Reference

protectedClearingReferenceclearingReference;

(2)servlet容器不完全支持SCA的代碼寫(xiě)法,servlet通過(guò)SCA Component Context來(lái)查詢(xún)Clearing Reference。Component Context是標(biāo)準(zhǔn)的SCA API。常見(jiàn)的Tomcat服務(wù)器是不完全支持SCA的,可以采用下面的寫(xiě)法。

public void init(ServletConfigconfig) throws ServletException {

if (clearingReference==null){

ComponentContextcontext=(ComponentContext)config.getServletContext().getAttribute("org.osoa.sca.ComponentContext");

clearingReference=context.getService(ClearingReference.class, "ClearingRef-erence");

}

}

2.3 配置TuscanyServletFilter過(guò)濾器

在基于Web Service的SCA應(yīng)用中,要想在Web環(huán)境中使用Tuscany提供的功能,需要在web.xml中設(shè)置TuscanyServletFilter過(guò)濾器。其工作過(guò)程如下:當(dāng)應(yīng)用服務(wù)器啟動(dòng)、客戶(hù)端訪問(wèn)jsp頁(yè)面時(shí),服務(wù)器調(diào)用Web.xml中Tuscany Servlet Filter過(guò)濾器。在Tuscany Servlet Filter過(guò)濾器中,首先得到一個(gè)WebAppServletHost實(shí)例,Web App Servlet Host是在Web應(yīng)用環(huán)境中使用的Tuscany功能提供者;在Web App Servlet Host中,得到一個(gè)SCA Domain實(shí)例,并將之放入Servlet Context上下文中,以后可藉由相應(yīng)的key得到此SCA Domain實(shí)例,即jsp中成功取得SCADomain實(shí)例,根據(jù)SCA Domain實(shí)例取得Domain域中相應(yīng)的組件,之后就可以調(diào)用組件中的各種業(yè)務(wù)方法了。

Tuscany Servlet Filter過(guò)濾器具體配置:在WEB-INF/目錄下創(chuàng)建web.xml,在web.xml文件中配置Tuscany Servlet過(guò)濾器。主要架構(gòu)內(nèi)容如下:

tuscany

……

tuscany

/*

……

QuerySettlementServlet

QuerySettlementServlet

……

3 基于SCA調(diào)用遠(yuǎn)程服務(wù)示例

將定義的web構(gòu)件中的組件部署到Tomcat服務(wù)器,啟動(dòng)Tomcat服務(wù)器,在瀏覽器中輸入調(diào)用遠(yuǎn)程服務(wù)的jsp頁(yè)面,并在頁(yè)面輸入要查詢(xún)的各項(xiàng)條件,提交后,瀏覽器去調(diào)用QuerySettlementServlet.java程序,并使用SCA ComponentContext(SCA API)來(lái)查詢(xún)ClearingReference服務(wù),Clearing Reference服務(wù)再調(diào)用遠(yuǎn)程服務(wù)ClearingService中的接口query All SalersSettle Statements(String strSale,Strings trFundCode,String cfDate1,String cfDate2),根據(jù)“代銷(xiāo)機(jī)構(gòu)”“基金代碼”“起始確認(rèn)日期”“結(jié)束確認(rèn)日期”查詢(xún)代銷(xiāo)機(jī)構(gòu)交收資金明細(xì)。代碼片斷如下:

protected void doPost(HttpServletRequest request,Http Servlet Response response) throws Servlet Exception,IOException {

……

ssr=clearing Reference.query All Salers Settle Statements(strSaler ID,strFundcode,cfmDate1,cfmDate2);

……}

運(yùn)行結(jié)果如圖4所示。

圖4 代銷(xiāo)機(jī)構(gòu)交收資金明細(xì)查詢(xún)結(jié)果

4 結(jié)束語(yǔ)

本文基于 SCA架構(gòu)與servlet相結(jié)合,通過(guò)建立web構(gòu)件、servlet程序及配置servlet過(guò)濾器,實(shí)現(xiàn)了基于SCA的遠(yuǎn)程調(diào)用web服務(wù)。這種框架利用Tuscany SCA簡(jiǎn)化了遠(yuǎn)程服務(wù)的訪問(wèn)方式。

[1]Simon Laws,Mark Combellack,Raymond Feng.Tuscany SCA in Action[EB/OL].[2014-06-05].http://www.open-open.com/doc/view/4cd938feb9b34d49a82f664958 a9a248

[2]吳清濤.基于Proxy模式的遠(yuǎn)程處理框架研究[J].長(zhǎng)江大學(xué)學(xué)報(bào):自然科學(xué)版,2013,10(19):23-26

[3]孫佳慶,俎云霄,李巍海,等.基于JSP的Matlab遠(yuǎn)程調(diào)用和并行處理[J].計(jì)算機(jī)科學(xué)與應(yīng)用,2013(3):273-277

[4]周毅,張曉先,陳麗蓉.AUTOSAR 符合性測(cè)試適配器的實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程,2014(1):291-294

[5]李海聞,寧敏,林福良,等.一種基于CORBA的分布式應(yīng)用模型[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(S1):33-34

[6]紐康莫,勞莫,徐涵,等.Understanding SOA with Web Service:中文版[M].北京:電子工業(yè)出版,2006:20-32

[7]劉佑平.SCA在鐵路信息共享平臺(tái)中的應(yīng)用研究[D].北京:北京交通大學(xué)研究生院,2008:2-35

[8]焦烈焱,馮興智,楊洪波.SOA中國(guó)路線圖[M].北京:清華大學(xué)出版社,2009:2-223

(責(zé)任編輯:汪材印)

10.3969/j.issn.1673-2006.2014.11.023

2014-07-28

福建省教育廳B類(lèi)課題科技基金項(xiàng)目“基于Tuslang SCA的應(yīng)用開(kāi)發(fā)研究”(JB13335)。

唐青(1975-),女,福建福州人,碩士,講師,主要研究方向:計(jì)算機(jī)信息系統(tǒng)。

TP311.5

A

1673-2006(2014)11-0079-04

猜你喜歡
調(diào)用過(guò)濾器代碼
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
支持過(guò)濾器的REST模型研究與實(shí)現(xiàn)
聲音過(guò)濾器
基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
基于LOGO!的空氣過(guò)濾器自潔控制系統(tǒng)
六安市| 黔西县| 弥勒县| 明星| 永靖县| 宜阳县| 神池县| 涟源市| 云龙县| 青海省| 黎川县| 渝中区| 荃湾区| 沧州市| 玉环县| 万年县| 佛山市| 麻城市| 互助| 右玉县| 台湾省| 阿坝县| 九龙县| 桂东县| 竹山县| 普陀区| 牟定县| 舞钢市| 寿阳县| 通山县| 雷山县| 安新县| 莱阳市| 西乌珠穆沁旗| 嘉定区| 永胜县| 若羌县| 侯马市| 高尔夫| 阳高县| 绥化市|