最近單位的開發區換了 Oracle 的架構,從單台改成 RAC ,不知道為什麼 Jboss 原本不需要 keep alive 現在需要才可以維持 connection,不然 server.log 會噴
IJ030027: Destroying connection that is not valid, due to the following exception: oracle.jdbc.driver.T4CConnection@一串ID: java.sql.SQLException: pingDatabase failed status=-1
由於我們的 Production 也不需要加,所以一時有點沒頭緒,後來在網路翻閱了一下 RedHat 官方跟 Oracle 的文件,目前設定如下,安定使用中
先前測試了一下 ENABLE=BROKEN 加在 connection-url 是沒有作用的,原來是要另外加參數餵給 Jboss
關鍵在加上 JDBC 的參數
1 | <connection-property name="oracle.net.keepAlive">true</connection-property> |
另外 Oracle 的 validation RedHat 官方手冊是這樣建議的
1 | <validation> |
因此整塊的設定如下
1 | <datasource jndi-name="java:jboss/MYPOOL" pool-name="MYPOOL" enabled="true" use-java-context="true" statistics-enabled="true"> |
參考資料