自從開始學習、測試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):
為了避免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。
因為DSS會使用到資料庫連線,因此先將JDBC的driver檔,放到
$DSS_HOME/repository/components/lib目錄底下,
接著,就和WSO2 ESB類似,到$DSS_HOME/bin目錄底下,執行wso2server.sh檔,以啟動服務。
經驗上,在啟動前也許可以先設定個環境變數
export CARBON_HOME=$DSS_HOME
等待服務啟動完成後,就可以用Web browser連線到DSS,
按下左邊選單的Data Service下的「Create」,進行Data Service的建立,
輸入「Data Service Name」以及其他欄位的值,按下「Next」到下一步,
新增Data Source,實際要連線到資料來源的設定,按下「Add New Data Source」,
設定DatSource Id,選擇Data Source Type為RDBMS,
這個測試使用Oracle資料庫,所以Database Engine選擇Oracle,選擇後會依不同的選擇項目給予需要
設定的欄位,
Oracle資料庫連線需要設定Driver Class、JDBC URL、User Name以及Password,
設定好之後先按底下「Test Connection」鍵,測試連線是否無誤。
在測試到這邊時,卻出現無法載入Oracle JDBC的錯誤,
而在服務的log中,也出現ClassNotFound的錯誤,
但是,在WSO2 Data Services Server的說明網址中,
http://wso2.org/project/data-services/2.6.3/docs/quickstart_guide.html
明明就有提到JDBC driver存放的位置在$DSS_HOME/repository/component/lib底下,
處理經過:
結果隔天早上來,又重新啟動DSS服務後,又變成可以成功連線了,怪怪!
難道,要儲存在目錄中一定時間,才能生效?
不過,反正JDBC driver要存放在$DSS_HOME/repository/components/lib目錄,這一點是沒錯的!
接著,新增Query內容,
先檢視測試table的資料內容:
Table name:emp
資料筆數:3筆
這選測試給一個數字,SQL查詢 emp_no 小於該數字之資料列,
因為SQL中有一處需要給予參數值,因此點選「Add New Input Mapping」新增輸入參數,
給定名稱,依欄位資料型態或參數類型,選擇「SQL Type」,若有多個,則需要指定「Ordinal」,
設定完成後按下「Add」新增,
這時,參數已顯示在畫面上,按下「Main Configuration」回到主設定區,
接下來,設定Query結果的對應,先給定「Grouped by element」及「Row name」,
其中,
「Grouped by element」即為產生的XML檔的根元素,這邊設定為employees
「Row name」值則是每一筆資料之區隔,這邊設定為employee,
完成設定後,按下「Main Configuration」鍵回到主設定區,
完成Query設定,按下「Save」鍵儲存,
給定名稱,在「Query ID」處,選擇所要使用的Query,這個範例只有一個Query,就選它,
按下「Save」儲存設定,
可以在Home > Manager > Web Services > List底下,看到該data service。
若需要測試,按下右邊「Try this service」進行測試,
左邊是要傳送的Request內容,
將參數值改為3,表示取得emp_no < 3的所有資料列,然後按下「Send」開始查詢,
在右邊的Response中,可以得到查詢結果,
其中,根元素為employees,每筆資料以employee元素包住,
不過,時間欄位「insert_time」的值似乎只有顯示日期而已。