天天看點

A C3P0Registry mbean is already registered.This probably means that an application using c3p0的警告資訊處理

系統在啟動的時候c3p0報警告資訊“A C3P0Registry mbean is already registered. This probably means that an application using c3p0 was undeployed, but not all PooledDataSources were closed prior to undeployment. This may lead to resource leaks over time. Please take care to close all PooledDataSources.” 

警告原因已找到。當一個tomcat下啟動兩個或兩個以上使用了C3P0的系統時,就會出現以上警告資訊。 

有源代碼可以看出問題(attemptManageC3P0Registry方法),也就是c3p0的托管bean已經注冊l,再次注冊的時候就會警告。 

解決方案:将c3p0包放入Tomcat即可

以下為我自己的補充部分:

今天突然發現項目又出現了這個情況,欲再次用上面的方法解決,離奇的發現,不行了……

雖說這隻是一個“warning”,但是莫名其妙的發生一個警告居然還沒發辦它,着實讓我不爽。于是找啊找,找啊找,就是找不到原因,回家的路上,一肚子惱火加苦悶。

百度不下十遍,出來的有價值線索僅有三條,而第一條也是最靠譜的就是上面的那個方法了。

根據上面的這個線索,我做了以下猜測并采取措施:

1.删除其他所有釋出到伺服器的項目,不過早在上次問題出現這步已經做了,伺服器目錄下除了我的oa項目沒有任何多餘的東西;

2.好像百度上說到了server.xml檔案,于是進去tomcat目錄下找了一番,還想沒有什麼可以的東西;

3.幸好我的項目我都做了版本備份,于是幹脆把項目從IDE中删了,再次導入備份的,依舊,我有點崩潰;

4.想起上回老師幫我解決問題時在我的tomcat上做了手腳,搞的我IDE中的所有項目都成了關閉狀态(當時還不知道怎麼回事,隻是發現輕按兩下項目才能恢複正常,後來才知道這個是項目關閉狀态,通過手動右鍵、關閉可以做到),于是找到..\apache-tomcat-6.0.32\work\Catalina\localhost目錄下,把和項目名相同的那個檔案删了(其實不知道這個檔案是什麼,有哪位知道的朋友回複告訴我,再次先謝過了),試試重新釋出重新開機,悲催,還是不行,倒是自動在這個目錄又生成那個檔案和一個名字好像的檔案,分别是JBA_OA和JBA_OA.myeclipse.bak。

5.無奈,随便看看,找到了..\apache-tomcat-6.0.32\webapps目錄下,又發現了JBA_OA和JBA_OA.myeclipse.bak兩個檔案,這個目錄我知道,是項目釋出後的路徑所在,第一感覺就覺得這個JBA_OA.myeclipse.bak多餘,果斷删了,試試重新釋出,嘿!行了。後來我幹脆把..\apache-tomcat-6.0.32\work\Catalina\localhost目錄下的項目檔案和那個多餘的bak檔案都删了,沒有影響項目的釋出和重新開機,問題到此徹底解決了。

總結 ,歸根結底原因上面的思路是對的,隻是解決方案太籠統了,下次記得,凡是涉及某某配置重複加載沖突的問題時,記得在釋出路徑和那個好像叫工作路徑的目錄下找找原因。