日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

用DataStage 進(jìn)行數(shù)據(jù)整合,第 3 部分: 實(shí)時(shí)數(shù)據(jù)...

 dazheng 2007-11-14
本系列的第 1 部分和第 2 部分詳細(xì)介紹了如何利用 DataStage 開(kāi)發(fā) ETL Job。 在本文中,我們將引入 RTI Job 的概念,并詳細(xì)講述如何利用 DataStage 開(kāi)發(fā) RTI Job 并將 RTI Job 發(fā)布成 Web Service 以供其他應(yīng)用程序調(diào)用。

本文主要包含以下幾部分內(nèi)容:

1. RTI Job特性介紹

2. 開(kāi)發(fā)一個(gè)RTI Job

3. 將RTI Job發(fā)布成Web Service

4. 利用Java客戶(hù)端調(diào)用發(fā)布好的Web Service

RTI Job特性介紹

RTI Job是 ETL Job的一種特殊形式,它可以被發(fā)布成RTI 服務(wù)(RTI Service),RTI服務(wù)分成三種,分別是Web service,EJB和JMS。在本文中我們只介紹如何發(fā)布成Web service。正是因?yàn)镽TI Job可以以服務(wù)的形式被發(fā)布出來(lái),這就使得企業(yè)數(shù)據(jù)整合和企業(yè)的面向服務(wù)的架構(gòu)(SOA)無(wú)縫的整合在了一起。下面我們通過(guò)圖一來(lái)看一下RTI Job被發(fā)布成RTI服務(wù)后整個(gè)應(yīng)用程序的架構(gòu)。


圖一:RTI 架構(gòu)
圖一:RTI 架構(gòu)

從這張圖中,我們可以清楚地看出RTI的架構(gòu),首先開(kāi)發(fā)好的RTI Job的實(shí)例運(yùn)行在DataStage Server上,這些RTI Job以RTI Service的形式發(fā)布在RTI Server上。RTI Server和DataStage Server之間通過(guò)RTI Agent進(jìn)行通信。其實(shí)RTI Server本身也是作為一個(gè)Web應(yīng)用程序運(yùn)行在Web應(yīng)用程序服務(wù)器上的,可以是IBM Websphere 應(yīng)用程序服務(wù)器或者BEA WebLogic應(yīng)用程序服務(wù)器等。RTI Server和DataStage Server可以不放在同一臺(tái)機(jī)器上,但是RTI Agent和DataStage Server必須放在同一臺(tái)機(jī)器上面。這樣,在RTI Server上部署好的Web Service就可以被各種客戶(hù)端來(lái)調(diào)用,比如Java, dot NET等。

RTI Job的種類(lèi)

RTI Job分成三種,第一種和普通的ETL Job沒(méi)什么區(qū)別,既不含有RTI輸入組件(RTI Input Stage)也不含有RTI 輸出組件(RTI Output Stage)。第二種只含有RTI輸出組件,第三種既含有RTI 輸入組件又含有RTI輸出組件。下面我們分別來(lái)介紹一下這三種類(lèi)型的RTI Job

1. 既不含RTI輸入組件也不含RTI輸出組件

前面提到,這種RTI Job和普通的ETL Job沒(méi)有什么區(qū)別,那么它怎么同調(diào)用它的客戶(hù)端進(jìn)行交互呢,這分兩種情況,第一種情況是客戶(hù)端只是希望調(diào)用一個(gè)ETL Job來(lái)執(zhí)行數(shù)據(jù)的抽取,轉(zhuǎn)換和加載的工作,不需要對(duì)該ETL Job有輸入也無(wú)需從該ETL Job中得到輸出。第二種情況是通過(guò)對(duì)該ETL Job設(shè)置參數(shù)來(lái)獲得從客戶(hù)端的輸入,在這種情況下,該ETL Job有輸入但沒(méi)有輸出。大家注意到,在這兩種情況下,客戶(hù)端都不能從該ETL Job中獲得返回值,也就是說(shuō)該ETL Job沒(méi)有輸出。為什么會(huì)這樣呢,因?yàn)镽TI Job若想有輸出,那么它必須含有RTI 輸出組件。圖2顯示了這種既不含RTI輸入組件也不含RTI輸出組件的RTI Job的一個(gè)例子。


圖2:RTI Job示例1
圖2:RTI job示例1

2. 只含有RTI輸出組件

這種RTI Job含有RTI輸出組件但不含有RTI輸入組件,這種RTI Job能通過(guò)RTI輸出組件向調(diào)用它的客戶(hù)端返回需要的值,可以是一個(gè)整型數(shù)據(jù),一個(gè)結(jié)構(gòu)化的數(shù)據(jù)或者一個(gè)結(jié)構(gòu)化的數(shù)組,具體返回什么,可以在部署成Web Service的過(guò)程中設(shè)置,這會(huì)在文章的第三部分進(jìn)行介紹。當(dāng)然,這種類(lèi)型的RIT Job也是通過(guò)設(shè)置Job的參數(shù)來(lái)接收從客戶(hù)端傳過(guò)來(lái)的參數(shù)的。圖3顯示了一個(gè)只含有RTI輸出組件的一個(gè)例子。


圖3:RTI Job示例2
圖3:RTI job示例2

3. 既含RTI輸入組件又含RTI輸出組件

這種RTI Job既能通過(guò)RTI輸入組件接受從客戶(hù)端傳過(guò)來(lái)的參數(shù),又能通過(guò)RTI輸出組件來(lái)向客戶(hù)端返回結(jié)果。這種RTI Job與前兩種RTI Job的另外一個(gè)不同點(diǎn)是,當(dāng)這種RTI Job編譯后,會(huì)產(chǎn)生一個(gè)或者多個(gè)實(shí)例一直運(yùn)行,這些事例會(huì)維持著和數(shù)據(jù)庫(kù)的連接,因此當(dāng)客戶(hù)端進(jìn)行調(diào)用的時(shí)候,相應(yīng)速度就會(huì)非???,而前面兩種RTI Job的響應(yīng)速度則相對(duì)會(huì)比較慢一些。圖4是一個(gè)既含RTI輸入組件又含RTI輸出組件的RTI Job的例子。


圖4:RTI Job示例3
圖4:RTI job示例3

在介紹了各種不同的RTI Job之后,我們接下來(lái)進(jìn)入如何開(kāi)發(fā)一個(gè)RTI Job的階段。





回頁(yè)首


開(kāi)發(fā)一個(gè)RTI Job

在這一部分中,我們將詳細(xì)講解如何開(kāi)發(fā)一個(gè)既含RTI輸入組件又含RTI輸出組件的RTI Job。首先我們來(lái)介紹一下我們即將開(kāi)發(fā)的RTI Job的功能:我們的數(shù)據(jù)庫(kù)系統(tǒng)中預(yù)先建立了一張表,表明為Student,這張表由兩個(gè)字段,分別是ID和Name,我們即將開(kāi)發(fā)的RTI Job就是通過(guò)接受從客戶(hù)端傳進(jìn)來(lái)的ID來(lái)查找對(duì)應(yīng)的Name,然后將查詢(xún)結(jié)果返回到客戶(hù)端去。

1. 打開(kāi)DataStage Designer, 系統(tǒng)會(huì)自動(dòng)彈出一個(gè)創(chuàng)建新的DataStage Job的對(duì)話框來(lái),如圖5所示,選擇Server Job,然后單擊OK按鈕;


圖5:新建Server Job
圖5:新建Server job

2. 這時(shí)候系統(tǒng)創(chuàng)建的Server Job如圖6所示, 這時(shí)候這個(gè)Server Job上還沒(méi)有放任何DataStage組件,注意我們現(xiàn)在還沒(méi)有保存這個(gè)Server Job,單擊左上角的保存按鈕或者直接用Ctrl+S對(duì)Server Job進(jìn)行保存;


圖6:創(chuàng)建的Server Job
圖6:創(chuàng)建的Server job

3. 如圖7所示,在彈出的保存對(duì)話框中,輸入Server Job的名稱(chēng)以及要保存的路徑,在我們的例子中,我們以RTIJob為Server Job的名稱(chēng),保存在文件夾RTISample中;


圖7:保存Server Job
圖7:保存Server job

4. 保存好后,我們把需要的DataStage的組件從左邊的組件面板拖入到右邊的設(shè)計(jì)器中,如圖8所示,我們需要一個(gè)RTI 輸入組件,一個(gè)RTI輸出組件,一個(gè)Transformer組件和一個(gè)DB2 UDB組件。選擇好組件后,按照?qǐng)D8所示的邏輯進(jìn)行連接,并分別為每個(gè)組件賦上一個(gè)有意義的名字;


圖8:選擇需要的組件
圖8:選擇需要的組件

5. 在各個(gè)組件都準(zhǔn)備好之后,我們需要對(duì)每個(gè)組件的屬性進(jìn)行設(shè)置。由于對(duì)屬性進(jìn)行設(shè)置的時(shí)候需要用到我們之前提到的Student表的表結(jié)構(gòu),我們首先需要從數(shù)據(jù)庫(kù)中導(dǎo)入Student表的表結(jié)構(gòu),我們接下來(lái)的幾個(gè)步驟就是進(jìn)行表結(jié)構(gòu)導(dǎo)入工作。在DataStage Designer中,如圖9所示,右鍵單擊Table Definition,然后選擇Import ‘ Plug-in Meta Data Definition;


圖9:導(dǎo)入表結(jié)構(gòu)
圖9:導(dǎo)入表結(jié)構(gòu)

6.如圖10所示,在彈出的對(duì)話框中,選擇DSDB2,然后單擊OK按鈕;


圖10:選擇數(shù)據(jù)庫(kù)類(lèi)型
圖10:選擇數(shù)據(jù)庫(kù)類(lèi)型

7.然后在Server Name下拉列表中選擇SAMPLE,我們創(chuàng)建的Student表正是存放在這個(gè)數(shù)據(jù)庫(kù)中的,然后輸入用戶(hù)名和密碼,并注意一定要選上Tables選擇框,然后單擊Next按鈕,如圖11所示;


圖11:選擇數(shù)據(jù)庫(kù)連接信息
圖11:選擇數(shù)據(jù)庫(kù)連接信息

8.如圖12所示,選擇表Student,然后輸入表結(jié)構(gòu)要保存的路徑,系統(tǒng)提供了一個(gè)默認(rèn)的保存路徑,我們可以修改成為我們想要保存的地方。然后單擊Import按鈕來(lái)導(dǎo)入表Student的表結(jié)構(gòu);


圖12:選擇要導(dǎo)入的表結(jié)構(gòu)
圖12:選擇要導(dǎo)入的表結(jié)構(gòu)

9.接著我們來(lái)編輯DB2 UDB組件的屬性,雙擊組件,如圖13所示的屬性設(shè)置框就會(huì)彈出來(lái),在Stage標(biāo)簽的General子標(biāo)簽中,我們輸入Server Name為Sample,然后輸入連接數(shù)據(jù)庫(kù)用的用戶(hù)名和密碼,在事務(wù)隔離級(jí)別(Transaction Isolation)的下拉框中,我們使用系統(tǒng)的默認(rèn)值,游標(biāo)穩(wěn)定性隔離級(jí)別。然后單擊Output標(biāo)簽;


圖13:設(shè)置數(shù)據(jù)庫(kù)連接信息
圖13:設(shè)置數(shù)據(jù)庫(kù)連接信息

10.如圖14所示,在Output標(biāo)簽的General子標(biāo)簽中,在Table Name輸入框中輸入表名Student,然后在Query Type下拉框中選擇Generated SQL Query. 最后單擊子標(biāo)簽Column進(jìn)行進(jìn)一步的屬性設(shè)置;


圖14:選擇要連接的表
圖14:選擇要連接的表

11.如圖15所示,在Column子標(biāo)簽中單擊按鈕Load..,系統(tǒng)會(huì)彈出一個(gè)對(duì)話框讓選擇需要引入的表結(jié)構(gòu),我們選擇剛才從數(shù)據(jù)庫(kù)中導(dǎo)入的表Student的表結(jié)構(gòu),然后單擊OK按鈕;


圖15:引入表結(jié)構(gòu)
圖15:引入表結(jié)構(gòu)

12.如圖16所示,在彈出的對(duì)話框中可以選擇需要導(dǎo)入表Student的那些列,系統(tǒng)默認(rèn)是全部導(dǎo)入,保持默認(rèn),單擊OK按鈕;


圖16:選擇要導(dǎo)入的列
圖16:選擇要導(dǎo)入的列

13.如圖17所示,導(dǎo)入表結(jié)構(gòu)后,Column標(biāo)簽里面會(huì)顯示出我們從數(shù)據(jù)庫(kù)中導(dǎo)入的表Student的表結(jié)構(gòu),單擊View Data按鈕來(lái)測(cè)試一下連接;


圖17:導(dǎo)入后的表結(jié)構(gòu)
圖17:導(dǎo)入后的表結(jié)構(gòu)

14. 單擊View Data按鈕后,如果所有的設(shè)置都正確的話,系統(tǒng)就會(huì)彈出如圖18所示的窗口,里面顯示了Student表的內(nèi)容,在我們的例子中,Student表里面有兩條記錄。至此,DUB UDB組件的屬性設(shè)置已經(jīng)完成。如果在這一步中不能成功顯示表中的數(shù)據(jù)的話,就需要回過(guò)頭來(lái)看看前面的設(shè)置是不是正確;


圖18:測(cè)試連接
圖18:測(cè)試連接

15.接下來(lái)我們?cè)O(shè)置RTI Input Stage的屬性,雙擊RTI Input Stage組件,系統(tǒng)會(huì)彈出如圖19所示的窗口,在Stage標(biāo)簽的General子標(biāo)簽中,你可以為該組件加一些注釋以表明該組件的用途,也可以在這里設(shè)置組件的顯示現(xiàn)實(shí)名稱(chēng)。然后我們單擊Outputs標(biāo)簽;


圖19:RTI輸入組件屬性設(shè)置
圖19:RTI輸入組件屬性設(shè)置

16.在Outputs標(biāo)簽的Columns子標(biāo)簽中,可以直接輸入和Student表的ID字段相同的字段定義,也可以通過(guò)Load按鈕來(lái)從Student表結(jié)構(gòu)中只選擇導(dǎo)入ID字段的定義。注意這里的ID字段正是需要從客戶(hù)端接受的參數(shù)。當(dāng)然客戶(hù)端可以傳過(guò)來(lái)一個(gè)ID的值或者以數(shù)組的形式傳過(guò)來(lái)多個(gè)ID的值,具體的設(shè)置是在部署Web Service的過(guò)程中進(jìn)行的。設(shè)置完成后,單擊OK按鈕,如圖20所示;


圖20:引入字段定義
圖20:引入字段定義

17.然后我們對(duì)RTI Output Stage組件屬性進(jìn)行設(shè)置,雙擊RTI Output Stage組件,如圖21所示的窗口會(huì)顯示出來(lái),像對(duì)RTI Input Stage組件進(jìn)行屬性設(shè)置一樣,這里同樣可以加入一些描述信息,更改RTI Output Stage組件的顯示名稱(chēng)等,我們保持默認(rèn),然后單擊Inputs標(biāo)簽;


圖

18.在Inputs標(biāo)簽的Columns子標(biāo)簽中,直接輸入如圖22所示的內(nèi)容,當(dāng)然,你也可以從Student表中只導(dǎo)入Name字段的定義,注意我們這里的Name字段正是需要返回給客戶(hù)端的數(shù)據(jù),當(dāng)然是返回一個(gè)還是多個(gè)值是通過(guò)在部署Web Service的過(guò)程中來(lái)設(shè)置的。最后單擊OK按鈕來(lái)完成設(shè)置;


圖

19.然后我們來(lái)設(shè)置Transformer Stage組件的信息,具體設(shè)置的內(nèi)容如圖23所示。在該圖中,左上角的Parameter框代表的是RTI Input Stage組件,它只含有一個(gè)字段ID,左下角的Data框代表的是DB2 UDB組件,連接的是Student表,它有兩個(gè)字段ID和Name。由下角的Name框代表的是RTI Output Stage組件的信息,它只有一個(gè)字段Name,這也正是需要返回給客戶(hù)端的信息;


圖23:配置Transformer Stage組件
圖23:配置Transformer stage組件

20.配置完每個(gè)組件的屬性后,我們需要對(duì)整個(gè)Job的屬性進(jìn)行配置,以使得DataStage系統(tǒng)知道這是一個(gè)RTI Job。單擊DataStage Designer工具欄中的Job Properties圖標(biāo),如圖24所示的對(duì)話框就會(huì)彈出來(lái),然后選上Allow Mutiple Instance和RTI Service Enabled選擇框。這樣就能利用DataStage提供的RTI控制臺(tái)將該RTI Job發(fā)布成Web Service。最后單擊OK按鈕并保存更改;


圖24:配置RTI Job
圖24:配置RTI job

21.這時(shí)候我們已經(jīng)配置好了所有需要配置的信息,接下來(lái)我們來(lái)編譯開(kāi)發(fā)好的RTI Job,單擊DataStage Designer工具欄中的編譯圖標(biāo),編譯成功后的畫(huà)面如圖25所示。與一般的DataStage Job不同的是,如果你開(kāi)發(fā)的是一個(gè)既含有RTI輸入組件又含有RTI輸出組件的RTI Job,那么在編譯后就會(huì)自動(dòng)運(yùn)行這個(gè)RTI Job的實(shí)例。我們可以通過(guò)DataStage Director來(lái)觀察;


圖25:編譯RTI Job
圖25:編譯RTI job

22.如圖26所示,打開(kāi)DataStage Director,在RTI Sample目錄下面,你會(huì)看到一個(gè)RTI Job的實(shí)例正在運(yùn)行,這個(gè)實(shí)例維持著與數(shù)據(jù)庫(kù)的連接,如果你把數(shù)據(jù)庫(kù)連接斷掉,你會(huì)發(fā)現(xiàn)這個(gè)實(shí)例就會(huì)中斷掉,然后系統(tǒng)會(huì)接著嘗試啟動(dòng)一個(gè)新的實(shí)例,直到數(shù)據(jù)庫(kù)連接恢復(fù)正常;


圖26:查看RTI Job的狀態(tài)
圖26:查看RTI job的狀態(tài)

現(xiàn)在我們已經(jīng)成功開(kāi)發(fā)并編譯了RTI Job,我們接下來(lái)的工作就是將這個(gè)RTI Job發(fā)布成Web Service。





回頁(yè)首


將RTI Job發(fā)布成Web Service

這一部分我們將詳細(xì)講述如何將一個(gè)已經(jīng)編譯好的RTI Job發(fā)布成Web Service,在這一部分進(jìn)行之前,你需要檢查一下你的軟件的安裝,確保以下軟件已經(jīng)成功安裝好:

1. RTI Console 它是將RTI Job部署成Web Service的可視化接口,并且提供了部署的向?qū)Х奖阄覀冞M(jìn)行部署

2. RTI Agent 要確保它已經(jīng)同DataStage Server安裝在了同一臺(tái)機(jī)器上,RTI Agent的安裝一般是和DataStage Server的安裝一起安裝的,RTI Agent負(fù)責(zé)RTI Server和DataStage Server的通信。

3. RTI Server 部署的Web Service是運(yùn)行在RTI Server上的,當(dāng)然RTI Server也是運(yùn)行在一個(gè)Web應(yīng)用程序服務(wù)器上的,比如IBM Web Application Server。

準(zhǔn)備好需要的軟件后,我們進(jìn)入利用RTI控制臺(tái)發(fā)布Web Service的部分。

1.首先打開(kāi)RTI控制臺(tái),如圖27所示,DataStage提供了一個(gè)圖形化的界面方便我們把RTI Job發(fā)布成RTI Service。然后我們?cè)谧髠?cè)面板的Current Tasks模塊中單擊鏈接Register an RTI Server來(lái)新注冊(cè)一個(gè)RTI Server;


圖27:RTI 控制臺(tái)
圖27:RTI 控制臺(tái)

2.在彈出的對(duì)話框中,輸入RTI服務(wù)器的名字或者IP地址,然后在Web Service End-point中輸入如圖28所示的值,這里要注意,因?yàn)槲沂前裄TI Server部署在IBM Websphere 應(yīng)用程序服務(wù)器上的,而運(yùn)行在其上的應(yīng)用程序都是運(yùn)行在9080端口下面,所以我設(shè)置的端口號(hào)是9080,如果你是將RTI Server運(yùn)行在其他的應(yīng)用程序服務(wù)器上,你就需要將這個(gè)端口號(hào)改成該應(yīng)用程序服務(wù)器所對(duì)應(yīng)的端口號(hào),最后單擊Finish按鈕;


圖28:注冊(cè)RTI Server
圖28:注冊(cè)RTI server

3. 如圖29所示,我們會(huì)看到右邊的面板中出現(xiàn)了我們剛才注冊(cè)好的RTI Server,雙擊這個(gè)圖標(biāo)。


圖29:成功注冊(cè)RTI Server
圖29:成功注冊(cè)RTI server

4. 如圖30所示,在雙擊剛才注冊(cè)的RTI Server之后,左邊的菜單選項(xiàng)也發(fā)生了相應(yīng)的改變,我們?cè)贑urrent Tasks模塊中單擊鏈接Register a DataStage Machine來(lái)注冊(cè)一個(gè)DataStage服務(wù)器。


圖30:注冊(cè)DataStage服務(wù)器
圖30:注冊(cè)DataStage服務(wù)器

4. 彈出的對(duì)話框如圖31所示,我們可以在Machine Name輸入框中輸入DataStage服務(wù)器所在的計(jì)算機(jī)名或者IP地址。如果需要的話,我們還要輸入登陸的用戶(hù)名和密碼,其他選項(xiàng)保持默認(rèn),然后單擊Finish按鈕。


圖31:填寫(xiě)注冊(cè)信息
圖31:填寫(xiě)注冊(cè)信息

5. 如圖32所示,注冊(cè)好的DataStage服務(wù)器會(huì)顯示在右邊面板的上半部分中,注冊(cè)成功后,我們單擊左側(cè)菜單Current Tasks模塊中的鏈接Add a new Service to the RTI Server去注冊(cè)一個(gè)新的RTI Service;


圖32:注冊(cè)新的RTI Service
圖32:注冊(cè)新的RTI service

6.如圖33所示,在彈出的對(duì)話框中,在Service Name文本框中輸入sample,其他的內(nèi)容保持默認(rèn),然后單擊Finish按鈕;


圖33:填寫(xiě)配置信息
圖33:填寫(xiě)配置信息

6. 如圖34所示,注冊(cè)好的RTI Service顯示在右邊面板的下半部分,注意我們現(xiàn)在注冊(cè)的這個(gè)RTI Service只是一個(gè)空的殼子,我們還需要為它選擇使用的協(xié)議以及附加的RTI Job,這些都會(huì)在下面的步驟中進(jìn)行配置。最后我們雙擊這個(gè)RTI Service的圖標(biāo);


圖34:注冊(cè)好的RTI Service
圖34:注冊(cè)好的RTI service

8.如圖35所示,單擊左側(cè)面板Current Tasks模塊中的鏈接Add support for Service Bindings;


圖35:添加Service Binding
圖35:添加Service binding

9.如圖36所示,選擇Service Binding的類(lèi)型為SOAP over HTTP,因?yàn)槲覀兪菍TI Job發(fā)布成Web Service,所以我們必須選擇這個(gè)選項(xiàng),其他選項(xiàng)是用來(lái)把RTI Job發(fā)布成JMS或者EJB,然后單擊Next按鈕;


圖

10.如圖37所示,你可以輸入一些描述信息,然后單擊Finish按鈕;


圖37:添加描述信息
圖37:添加描述信息

11.如圖38所示,我們添加的Service Binding顯示在了右側(cè)面板的上半部分中,單擊該Service Binding的圖標(biāo),然后從左邊面板的Current Tasks模塊中單擊鏈接Add an operation來(lái)為該RTI Service添加RTI Job;


圖38:注冊(cè)好的Service Binding
圖38:注冊(cè)好的Service binding

12.如圖39所示,在彈出的對(duì)話框中選中我們之前開(kāi)發(fā)并編譯好的RTI Job RTIJob,然后單擊按鈕Next;


圖39:選擇RTI Job
圖39:選擇RTI job

13. 如下圖所示,我們需要在Operation Name文本框中輸入該RTI Job所對(duì)應(yīng)到Web Service中的名字,直接輸入RTIJob,保持其他選項(xiàng)為默認(rèn),然后單擊按鈕Next;


圖40:配置相關(guān)信息
圖40:配置相關(guān)信息

14.在如圖41所示的頁(yè)面中,我們可以配置該Web Service所接受的參數(shù)的信息,注意系統(tǒng)已經(jīng)默認(rèn)為我們生成了配置,那就是只接受一個(gè)名稱(chēng)為ID參數(shù),類(lèi)型為String,我們可以通過(guò)Options下來(lái)列表來(lái)改表輸入?yún)?shù)的設(shè)置,比如如果我們需要傳入的參數(shù)是結(jié)構(gòu)化的,那么我們需要選擇選項(xiàng)Group,如果我們需要傳入多個(gè)相同類(lèi)型的數(shù)據(jù),那么我們的參數(shù)就需要設(shè)置成Array,在我們的例子中,如果我們?cè)O(shè)置成了Array,那么就代表我們的Web Service會(huì)接受一個(gè)字符串?dāng)?shù)組,里面可能存放了多個(gè)人的ID信息。由于我們這個(gè)例子只是傳入一個(gè)ID,然后返回該ID所對(duì)應(yīng)的Name,所以我們不需要進(jìn)行設(shè)置,保持系統(tǒng)默認(rèn),然后單擊按鈕Next。


圖41:配置輸入?yún)?shù)
圖41:配置輸入?yún)?shù)

15.接著我們需要配置該Web Service向客戶(hù)端的返回值,由于我們只需要返回一個(gè)字符串類(lèi)型的數(shù)據(jù),我們保持系統(tǒng)的默認(rèn)設(shè)置,然后單擊按鈕Next;


圖42:配置返回值類(lèi)型
圖42:配置返回值類(lèi)型

16.在這里可以設(shè)置一些和WSDL文件相關(guān)的名字空間的信息,我們使用系統(tǒng)提供的默認(rèn)值,然后單擊Next按鈕;


圖43:名字空間的設(shè)置
圖43:名字空間的設(shè)置

17.如圖44所示,確認(rèn)選擇框Launch the Add Job/Map Wizard with the job or map you selected是選上的,然后單擊按鈕Finish;


圖44:完成配置
圖44:完成配置

18.在圖45中可以配置一些運(yùn)行時(shí)的參數(shù),比如RTI Job的實(shí)例的最小數(shù)目是多少,最大樹(shù)木是多少等,可以根據(jù)自己的應(yīng)用程序的需要來(lái)配置,比如如果同時(shí)會(huì)有多個(gè)客戶(hù)端來(lái)訪問(wèn)該Web Service,那么就需要將最小實(shí)例數(shù)目設(shè)置大一些。 設(shè)置好后,單擊按鈕Next;


圖45:配置運(yùn)行參數(shù)
圖45:配置運(yùn)行參數(shù)

19.在下圖中輸入驗(yàn)證信息,然后單擊按鈕Finish;


圖46:輸入驗(yàn)證信息
圖46:輸入驗(yàn)證信息

20.如下圖所示,系統(tǒng)彈出一個(gè)對(duì)話框提示用戶(hù)已經(jīng)成功的將RTI Job添加到了RTI Service當(dāng)中;


圖47:添加成功
圖47:添加成功

21.如圖48所示,我們需要重新激活我們之前配置的Service Binding,并且我們注意到我們添加的RTIJob也顯示在了右邊面板的下半部分;


圖48:激活Service Binding
圖48:激活Service binding

22.單擊左側(cè)面板的View RTI Service Repository鏈接,就進(jìn)入到了如圖49所示的頁(yè)面,然后單擊我們剛才注冊(cè)成功的Web Service sample;


圖49:部署的RTI Service
圖49:部署的RTI service

23.下圖顯示了我們剛部署成功的Web Service的相關(guān)信息,我們單擊對(duì)應(yīng)的WSDL文件的鏈接去查看WSDL文件;


圖50:Web Service 相關(guān)信息
圖50:Web service 相關(guān)信息

24.圖51顯示了我們部署好的Web Service對(duì)應(yīng)的WSDL文件的內(nèi)容,而各種客戶(hù)端正是通過(guò)這個(gè)WSDL文件對(duì)后臺(tái)的應(yīng)用邏輯進(jìn)行調(diào)用的。我們?cè)谖恼碌淖詈笠粋€(gè)章節(jié)會(huì)介紹如何調(diào)用該Web Service;


圖51:WSDL文件
圖51:WSDL文件

利用Java客戶(hù)端調(diào)用發(fā)布好的Web Service 文章接下來(lái)講述如何去調(diào)用我們之前發(fā)布好的Web Service,我們使用一個(gè)用Java語(yǔ)言編寫(xiě)的客戶(hù)端來(lái)進(jìn)行調(diào)用。在開(kāi)始之前,讀者應(yīng)該準(zhǔn)備好如下的環(huán)境:

1.Eclipse集成開(kāi)發(fā)環(huán)境

因?yàn)槲覀冮_(kāi)發(fā)的Java項(xiàng)目是在Eclipse下面進(jìn)行的,所以安裝一個(gè)Eclipse的環(huán)境能使讀者更容易的跟上文章的每一步。可以從Eclipse的官方網(wǎng)站上下載最新版本的Eclipse。

2.JDK1.4或者1.5

這是Java開(kāi)發(fā)的必備環(huán)境。

3. Axis

文章中會(huì)使用Axis提供的工具生成調(diào)用Web Service的本地Stub,方便對(duì)Web Service進(jìn)行調(diào)用。Axis可以從它的官方網(wǎng)站下載到,文章后面的資源列表包含了該鏈接。

下面我們開(kāi)始Java客戶(hù)端的開(kāi)發(fā)

1. 首先使用創(chuàng)建一個(gè)Java工程,命名為T(mén)estRTIJob,然后右鍵單擊這個(gè)工程并選擇屬性,會(huì)彈出如圖52所示的窗口,單擊Library標(biāo)簽,然后把下載的Axis的JAR文件加入進(jìn)來(lái)。


圖52:添加外部JAR文件
圖52:添加外部JAR文件

2. 然后從Eclipse中選擇Run ‘ Run..,會(huì)彈出如下圖所示的對(duì)話框,選擇程序運(yùn)行的類(lèi)別為Java Application,然后單擊按鈕Search;


圖53:新建一個(gè)運(yùn)行實(shí)例
圖53:新建一個(gè)運(yùn)行實(shí)例

3.如下圖所示,從彈出的對(duì)話框中選擇類(lèi)WSDL2Java,這個(gè)類(lèi)是Axis提供的用來(lái)從WSDL生成本地Stub類(lèi)的工具。然后單擊OK按鈕;


圖54:選擇運(yùn)行主類(lèi)
圖54:選擇運(yùn)行主類(lèi)

3. 然后在Argument標(biāo)簽中輸入我們剛才部署好的Web Service的WSDL文件的地址,如圖55所示,然后單擊按鈕Run;


圖55:運(yùn)行WSDL2Java
圖55:運(yùn)行WSDL2Java

4. 如圖56所示,運(yùn)行結(jié)束后,我們會(huì)看到我們創(chuàng)建的工程里面生成了一些類(lèi),這些類(lèi)就是輔助我們調(diào)用Web Service的Stub類(lèi);


圖56:生成的Stub類(lèi)
圖56:生成的Stub類(lèi)

5.我們接下來(lái)新建一個(gè)叫做TestRTIJob類(lèi)來(lái)通過(guò)生成的Stub類(lèi)來(lái)進(jìn)行調(diào)用Web Service,這個(gè)類(lèi)的源代碼如下所示:


清單1:調(diào)用Web Service
package com.ascential.rti.sample;
            import java.rmi.RemoteException;
            import javax.xml.rpc.ServiceException;
            public class TestRTIJob {
            public static void main(String[] args){
            SampleLocator locator = new SampleLocator();
            SampleDOCLIT service = null;
            try {
            service = locator.getsampleSoap();
            String name = service.RTIJob("001");
            System.out.println("The name is: " + name);
            } catch (ServiceException e) {
            e.printStackTrace();
            } catch (RemoteException e) {
            e.printStackTrace();
            }
            }
            }
            

運(yùn)行這個(gè)類(lèi),控制臺(tái)會(huì)打印出一串字符串:The name is Jason,這說(shuō)明我們成功的調(diào)用了Web Service,我們的RTI Job也成功的完成了我們所設(shè)計(jì)的業(yè)務(wù)邏輯。關(guān)于這個(gè)Java工程的詳細(xì)信息,讀者可以在文章的下載部分下在提供的整個(gè)工程的源代碼。

至此,我們已經(jīng)完成了從開(kāi)發(fā)RTI Job到部署RTI Job再到用Java Client調(diào)用部署的Web Service的整個(gè)過(guò)程。





回頁(yè)首


總結(jié)

本文首先介紹了什么是RTI Job以及RTI Job的特點(diǎn),然后通過(guò)開(kāi)發(fā)、部署RTI Job使讀者對(duì)RTI Job有了更進(jìn)一步的了解,最后通過(guò)開(kāi)發(fā)一個(gè)Java客戶(hù)端對(duì)Web Service進(jìn)行調(diào)用來(lái)結(jié)束了整個(gè)文章的講述。在面向服務(wù)的架構(gòu)日益成熟的今天,通過(guò)把ETL Job發(fā)布成Web Service供企業(yè)的其他應(yīng)用程序進(jìn)行調(diào)用無(wú)疑會(huì)是一個(gè)非常有價(jià)值的工作,從而使企業(yè)數(shù)據(jù)整合與企業(yè)的面向服務(wù)的架構(gòu)實(shí)現(xiàn)了無(wú)縫的融合。希望本片文章對(duì)使用DataStage進(jìn)行數(shù)據(jù)整合的讀者有所幫助。



參考資料

  1. 了解關(guān)于DataStage產(chǎn)品的更多信息:http://ibm./
  2. Eclipse官方網(wǎng)站:http://www./
  3. 下載最新版本的JDK:http://java./javase/downloads/index.jsp
  4. Axis官方網(wǎng)站:http://ws./axis/


關(guān)于作者

 

周登朋,上海交通大學(xué)研究生,目前在IBM上海國(guó)際化實(shí)驗(yàn)室(SGL)實(shí)習(xí),對(duì)Java技術(shù)以及信息檢索技術(shù)非常感興趣,你可以通過(guò) zhoudengpeng@yahoo.com.cn來(lái)聯(lián)系他.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多