一直出現 java.sql.SQLException: org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'proxool_pool'
這問題之前遇過, 是因為 web.xml 中 servlet load-on-startup 順序沒設定好造成的.
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/config/proxool.xml</param-value>
</init-param>
<param-value>WEB-INF/config/proxool.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
怎麼只換了個 jdk 又沒改 xml 卻又發生了?
查了半天, 原來 servlet 2.4 之後的規格, listener 的 init 順序需早於 servlet (有些 container 在 servlet 2.3 即已實作, 可參考這篇文章).
那怎麼辦呢 ? 把 Proxool 由 servlet 改成 listener 即可.
Proxool 本身沒提供 listener 的實作. 可參考這邊有實作
web.xml 改為如下即可:
<listener>
<listener-class>com.example.ProxoolListener</listener-class>
</listener>
<context-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/config/proxool.xml</param-value>
</context-param>
<param-value>WEB-INF/config/proxool.xml</param-value>
</context-param>
奇怪的是, 那沒換 jdk 之前怎麼能跑的 ???
沒有留言:
張貼留言