爲防止內存泄露,JDBC驅動程序已被強制取消註冊(解決)

今天部署一個應用,本地跑都沒問題,往公司服務器上放一版,結果出現如下錯誤:

公司服務器版本如下,好吧,的確有點老,問題是還是32位的系統。

服務器上環境爲jdk1.8,tomcat1.8,結果就報上邊的錯誤。

百度後發現有如下幾種方案:

  1. 忽略這些警告。 Tomcat正在做正確的工作。 實際的bug是在別人的代碼中(所討論的JDBC驅動程序),而不是在你的代碼中。 Tomcat在正常工作,並等待JDBC驅動程序供應商解決問題,以便升級驅動程序。 另一方面,您不應該在webapp的/ WEB-INF / lib中放置JDBC驅動程序,而只能在服務器的/ lib中放置JDBC驅動程序。 如果你仍然保存在webapp的/ WEB-INF / lib中,那麼你應該使用ServletContextListener手動註冊和註銷它。
  2. 降級到Tomcat 6.0.23或更低版本,這樣你就不會被那些警告所困擾。但它會悄悄地泄漏內存。這些內存泄漏是Tomcat的OutOfMemoryError問題背後的主要原因之一。
  3. 將JDBC驅動程序移動到Tomcat/lib文件夾,並有一個連接池數據源來管理驅動程序。請注意,Tomcat的內置DBCP在關閉時不會正確註銷驅動程序。另請參閱作爲WONTFIX關閉的bug DBCP-322。您可以將DBCP替換爲另一個更好的DBCP連接池。例如HikariCPBoneCP,或Tomcat JDBC池

方案一試了,但是沒什麼用,否定。

方案二沒試,主要是降低tomcat版本會暴露出太多漏洞,還得修復,麻煩。

方案三沒試,感興趣的可以試試。

我的解決方案很簡單,就是降一下jdk版本,由1.8降至1.7,問題解決。

別忘了配置環境變量啊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章