close

  自從開始學習、測試WSO2 ESB以來,一直覺得WSO2 ESB對於資料庫的資料轉換功能提供得太
陽春(不曉得是真的如此,還是自己對於功能的不熟悉)。除了dbLookup和dbReport分別用來對於
資料庫進行查詢以及異動之外,也沒有針對於資料庫的transport功能。
  但是,又需要針對於資料庫的資料整合進行測試。這時想到的,就是WSO2 Data Service的功能
了。所以,來測試一下Data Services Server的功能看看。

首先,到網址http://wso2.com/products/data-services-server
去下載WSO2 Data Services Server的二進制版本。直接將zip檔解壓縮在某個目錄底下即可使用。

為了待會測試sample之用,先到$DSS_HOME/samples/目錄下,執行ant進行編譯(ant環境之建置
請參考Apache ant):
ds01 

為了避免WSO2 Data Services Server的port與WSO2 ESB的port值相衝突(預設都是https是9443),
$DSS_HOME/repository/conf目錄底下,調整carbon.xml的內容中,<Offset>標籤裡的值。
最後連線的port值,就是 預設值 + offset 之總和。
在這邊我們Offset裡的值設為2,最後https連線port值,就是9443 + 2 = 9445。
ds02 

因為DSS會使用到資料庫連線,因此先將JDBC的driver檔,放到
$DSS_HOME/repository/components/lib目錄底下,
ds03 

接著,就和WSO2 ESB類似,到$DSS_HOME/bin目錄底下,執行wso2server.sh檔,以啟動服務。
經驗上,在啟動前也許可以先設定個環境變數
export CARBON_HOME=$DSS_HOME
ds04 

等待服務啟動完成後,就可以用Web browser連線到DSS,
ds05 

按下左邊選單的Data Service下的「Create」,進行Data Service的建立,
ds06 

輸入「Data Service Name」以及其他欄位的值,按下「Next」到下一步,
ds07  

新增Data Source,實際要連線到資料來源的設定,按下「Add New Data Source」,
ds08 

設定DatSource Id,選擇Data Source Type為RDBMS,
這個測試使用Oracle資料庫,所以Database Engine選擇Oracle,選擇後會依不同的選擇項目給予需要
設定的欄位,
Oracle資料庫連線需要設定Driver Class、JDBC URL、User Name以及Password,
ds09 

設定好之後先按底下「Test Connection」鍵,測試連線是否無誤。
在測試到這邊時,卻出現無法載入Oracle JDBC的錯誤,
ds09_error 
而在服務的log中,也出現ClassNotFound的錯誤,
ds09_error2 

但是,在WSO2 Data Services Server的說明網址中,
http://wso2.org/project/data-services/2.6.3/docs/quickstart_guide.html
明明就有提到JDBC driver存放的位置在$DSS_HOME/repository/component/lib底下,
ds09_explain   


處理經過:
結果隔天早上來,又重新啟動DSS服務後,又變成可以成功連線了,怪怪!
ds09_successful  
難道,要儲存在目錄中一定時間,才能生效?
不過,反正JDBC driver要存放在$DSS_HOME/repository/components/lib目錄,這一點是沒錯的! 


接著,新增Query內容,
ds10  


先檢視測試table的資料內容:
Table name:emp
資料筆數:3筆

ds_table_emp  


這選測試給一個數字,SQL查詢 emp_no 小於該數字之資料列,
ds11  

因為SQL中有一處需要給予參數值,因此點選「Add New Input Mapping」新增輸入參數,
ds12  

給定名稱,依欄位資料型態或參數類型,選擇「SQL Type」,若有多個,則需要指定「Ordinal」,
設定完成後按下「Add」新增,
ds13 

這時,參數已顯示在畫面上,按下「Main Configuration」回到主設定區,
ds14
 

接下來,設定Query結果的對應,先給定「Grouped by element」及「Row name」,
其中,
「Grouped by element」即為產生的XML檔的根元素,這邊設定為employees
「Row name」值則是每一筆資料之區隔,這邊設定為employee,
ds15  

依所撰擇的欄位,一一設定對應,
 ds16 

完成設定後,按下「Main Configuration」鍵回到主設定區,
ds17 

完成Query設定,按下「Save」鍵儲存,
ds18  

下一步,
ds19  

新增Operations,
ds20  

給定名稱,在「Query ID」處,選擇所要使用的Query,這個範例只有一個Query,就選它,
按下「Save」儲存設定,
ds21 

完成operation設定,
ds22 

完成整個Data service設定,
ds23
 

可以在Home > Manager > Web Services > List底下,看到該data service。
若需要測試,按下右邊「Try this service」進行測試, 

ds24  

左邊是要傳送的Request內容,
ds25

將參數值改為3,表示取得emp_no < 3的所有資料列,然後按下「Send」開始查詢,
ds26

在右邊的Response中,可以得到查詢結果,
其中,根元素為employees,每筆資料以employee元素包住,
ds27
不過,時間欄位「insert_time」的值似乎只有顯示日期而已。

arrow
arrow
    全站熱搜

    來自大海的心 發表在 痞客邦 留言(0) 人氣()