連接池報錯 Proxool Provider unable to load JAXP configurator file: proxool.xml
阿新 • • 發佈:2017-07-31
mage 最大連接數 代碼片段 大連 解決方案 自己 onf 去掉 current
上篇博文講到簡易配置 proxool 連接池:http://www.cnblogs.com/linnuo/p/7232380.html
由於把說明註釋留在了 proxool.xml 配置文件裏導致配置後報錯,原因如下:
hibernate.cfg.xml 代碼片段:
<session-factory> <property name="show_sql">true</property> <property name="generate_statistics">false</property> <propertyname="connection.useUnicode">true</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property> <property name="hibernate.proxool.xml">proxool.xml</property> <property name="hibernate.proxool.pool_alias">mysqldb</property> </session-factory>
proxool.xml 完整代碼:
<?xml version="1.0" encoding="UTF-8"?> <!-- the proxool configuration can be embedded within your own application‘s. Anything outside the "proxool" tag is ignored.--> <something-else-entirely> <proxool> <!--連接池的別名--> <alias>mysqldb</alias> <!--proxool只能管理由自己產生的連接--> <driver-url>jdbc:mysql://127.0.0.1:3306/ucom?useUnicode=true&characterEncoding=UTF8</driver-url> <!-- JDBC驅動程序 --> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root"/> <property name="password" value="gdyl2017"/> </driver-properties> <!-- proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閑的連接就馬上回收,超時的銷毀--> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <!-- 指因未有空閑連接可以分配而在隊列中等候的最大請求數,超過這個請求數的用戶連接就不會被接受--> <maximum-new-connections>20</maximum-new-connections> <!-- 最少保持的空閑連接數--> <prototype-count>5</prototype-count> <!-- 允許最大連接數,超過了這個連接,再有請求時,就排在隊列中等候,最大的等待請求數由maximum-new-connections決定--> <maximum-connection-count>100</maximum-connection-count> <!-- 最小連接數--> <minimum-connection-count>10</minimum-connection-count> <!-- 在分配連接前後是否進行有效性測試,這個是解決本問題的關鍵 --> <test-before-use>true</test-before-use> <test-after-use>true</test-after-use> <!-- 用於測試的SQL語句 一定要寫(不知道問什麽) --> <house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql> </proxool> </something-else-entirely>
以上代碼放在本地運行沒問題,但是放到服務器報錯
找了許久終於發現了問題:proxool.xml 文件裏不能存在中文,包括註釋
解決方案:
將 proxool.xml 的中文去掉即可,如下:
<?xml version="1.0" encoding="UTF-8"?> <!-- the proxool configuration can be embedded within your own application‘s. Anything outside the "proxool" tag is ignored. --> <something-else-entirely> <proxool> <alias>mysqldb</alias> <driver-url>jdbc:mysql://127.0.0.1:3306/ucom?useUnicode=true&characterEncoding=UTF8</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root"/> <property name="password" value="gdyl2017"/> </driver-properties> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <maximum-new-connections>20</maximum-new-connections> <prototype-count>5</prototype-count> <maximum-connection-count>100</maximum-connection-count> <minimum-connection-count>10</minimum-connection-count> <test-before-use>true</test-before-use> <test-after-use>true</test-after-use> <house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql> </proxool> </something-else-entirely>
連接池報錯 Proxool Provider unable to load JAXP configurator file: proxool.xml