Druid Closed Statement
最近公司項目Spring boot 1.5.8+ Druid 1.1.5 部署到 Weblogic時啟動不會報任何錯誤鳞芙。
但是發(fā)送交易時候阅悍,第一個SQL執(zhí)行不報錯,第二SQL語句執(zhí)行必報一下錯誤。后續(xù)所有SQL語句執(zhí)行都報一樣錯誤。
java.sql.SQLException: Closed Statement
at oracle.jdbc.driver.OracleClosedStatement.exitImplicitCacheToActive(OracleClosedStatement.java:2955)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.exitImplicitCacheToActive(OraclePreparedStatementWrapper.java:1247)
at com.alibaba.druid.util.OracleUtils.exitImplicitCacheToActive(OracleUtils.java:80)
at com.alibaba.druid.pool.PreparedStatementPool.get(PreparedStatementPool.java:66)
at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:345)
目前通過谷歌和Druid Github的查詢,貌似這個是一個BUG。升級到1.1.18版本也沒有解決該問題
Github 問題地址
按照以上這個回答答毫,確實將PSCache設(shè)置為false確實就沒有報錯。
而且通過錯誤信息也發(fā)現(xiàn)是關(guān)于PreparedStatement內(nèi)部出問題了您旁。
java.lang.NoSuchFieldError: defaultReader
部署到Weblogic啟動出現(xiàn)一個報錯烙常,一般來說啟動報錯都是包沖突。
可以創(chuàng)建src/main/webapp/WEB-INF/weblogic.xml 讓weblogic優(yōu)先加載項目jar包避免這個問題鹤盒。
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app
https://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>org.slf4j</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
</wls:weblogic-web-app>
package-name就是優(yōu)先加載包名
如果出現(xiàn)一下問題
SEVERE: defaultReader
java.lang.NoSuchFieldError: defaultReader
at com.jayway.jsonpath.spi.json.JsonSmartJsonProvider.<init>(JsonSmartJsonProvider.java:39)
at com.jayway.jsonpath.internal.DefaultsImpl.jsonProvider(DefaultsImpl.java:21)
at com.jayway.jsonpath.Configuration.defaultConfiguration(Configuration.java:174)
at com.jayway.jsonpath.internal.JsonContext.<init>(JsonContext.java:52)
at com.jayway.jsonpath.JsonPath.parse(JsonPath.java:596)
加入一下配置即可
<wls:prefer-application-packages>
<wls:package-name>net.minidev.json.*</wls:package-name>
</wls:prefer-application-packages>
而且發(fā)現(xiàn)一個問題蚕脏,一下配置就是全部有限項目的jar包,但是也沒有侦锯。prefer-web-inf-classes和prefer-application-packages不能同時使用
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>