在網路上看到在 Tomcat 中設置 Datasource,都需要將 jdbc driver 放到 Tomcat 的 lib 目錄下,之前在研究使用 JTA 時,才發現原來並不一定要將 jdbc driver 放在 Tomcat 的 lib 目錄下。之前說過 Tomcat 載入 class 的順序,當我們在 context.xml 中宣告了 Resource ,如果該 Resource 的 factory 是使用到 Tomcat lib 下的 class ,此時 classloader 就只會找 Tomcat lib 目錄下的 class 來載入。
上面的寫法,使用的是 Tomcat 預設的 Factory 來啟始 Resource,如果 jdbc driver 沒有放在 Tomcat 的 Lib 下,就會無法使用。
此寫法,當我使用 factory 是 com.atomikos.tomcat.BeanFactory,我是將其 jar 檔都打包在我的 war 檔裡,因此 Tomcat 在載入此 Resource 時,會使用的是 WEB APP 的 classloader ,因此 jdbc driver 也只要放在 web app 下即可被載入。
沒有留言:
張貼留言