延續昨天的作業,建立JDBC provider之後,右側選單 > Resources > JDBC > Data sources
Scope一樣選到Cell=DefaultCell01,並按下[New...]按鈕,新增資料來源,
Data source name:iron30
JNDI name:jdbc/iron30
按下next到下一頁,選擇剛剛新增的privoder [Oracle JDBC provider]
按下next,到下一頁需要提供DB的連線資訊,
下指令查出我們建立的Oracle DB 的IP是多少
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test-oracle-db
我的是172.17.0.2
因此db url是jdbc:oracle:thin:@172.17.0.2:1521:xe
輸入完畢後,按下Next
到了Step 4: Setup security aliases
這裡先跳過,直接按next
確認輸入無誤之後,一樣按下Fisish,再按Save儲存異動
儲存完畢之後,再點擊進入我們剛剛建立的iron30
點擊右方
選擇New...
輸入DB欲使用的User的帳號、密碼
按下ok之後,再按save儲存
此時,再回到 右側選單 > Resources > JDBC > Data sources
點選iron30
下拉到Security settings區塊,選擇如下圖,把剛剛新增的帳號套用進來
再按ok,再按save
接著回到Data sources頁面,
將iron30右方框框打勾,點選上面[Test connection]按鈕
本來預期應該會出現連線成功的訊息,結果發生預料之外的錯誤
The test connection operation failed for data source iron30 on server server1 at node DefaultNode01 with the following exception: java.sql.SQLException: java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=oracle/jdbc/pool/OracleConnectionPoolDataSource, offset=6. View JVM logs for further details.
看來是目前WAS的java版本(jdk 8) 不支援我們放上去的jdbc driver
不過不用緊張,換一個jar就好
下載ojdbc8
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8/21.7.0.0
一樣複製到container裡面
docker cp "C:/Users/user/Downloads/ojdbc8-21.7.0.0.jar" test-was8.5.5.20:/opt/IBM/WebSphere/AppServer/lib/
將先前放進container的ojdbc10-19.16.0.0.jar移除,以避免class loader 可能載入到ojdbc10的class
docker exec test-was8.5.5.20 rm /opt/IBM/WebSphere/AppServer/lib/ojdbc10-19.16.0.0.jar
回到console
右側選單 > Resources > JDBC > JDBC providers
點擊進入之前新增的Oracle JDBC Driver,更改Class path
並儲存
按下save儲存後,將container重啟,以確保WAS使用到的JDBC driver是我們要的ojdbc8
再回到Data sources頁面,
將iron30右方框框打勾,點選[Test connection]
測試連線成功,搞定