問題描述:
平台登陸的時候沒有問題,但是當從平台進入各個子平台的時候會出現使用者名稱不存在的問題,但是當再次進入這個子系統的時候就是正常的。
解決方案:
後來經過認真的分析,發現是我們串連的資料庫有問題,資料庫放在了一個個人電腦了,經常會關機,所以導致資料庫連接經常性斷了,所以出現了上述情況。
1、 設定validationQuery屬性
validationQuery:用於驗證串連是否成功的查詢SQL語句,SQL語句必須至少要返回一行資料,如你可以簡單地設定為:“select 1 from dual”;
2、 把maxActive設定大於0,maxActive:最大串連資料庫連接數,設定為0時,表示沒有限制;
問題總結:
當資料庫連接池中的串連被建立而長時間不使用的情況下,該串連會自動回收並失效,但用戶端並不知道,在進行資料庫操作時仍然使用的是無效的資料庫連接,這樣,就導致用戶端程式報“ java.sql.SQLException: Io 異常: Connection resetby peer”或“java.sql.SQLException 關閉的串連”異常,加上<propertyname="validationQuery" value="select * from dual"/>
配置後,用戶端在使用一個無效的串連時會先對該串連進行測試,如果發現該串連已經無效,則重新從串連池擷取有效資料庫連接來使用
以上是個人的分析和理解,有不對的地方請大家指出共同討論~~~
出現Connection reset bypeer: socket write error
異常的幾種可能:
1. 用戶端發出請求時,沒有完全獲得伺服器端的響應,用戶端與伺服器端發生斷鏈(例如網路中斷、使用者點擊了停止按鈕、瀏覽器關閉等)時
2. 伺服器的並發串連數超過了最大連結數,伺服器關掉了其中的一些連結。
3. 資料轉送時的等待時間過長,超出了資料庫的會話時間限制。
以上伺服器端都有可能報出 socket write error 異常。
l>�nl�<�57> response.setContentType("text/html;charset=GBK"); 也可把這句加到上面的Filter中,如注釋掉的部分。
有人說用 response.setCharacterEncoding("GBK"); 無效,必須用 response.setContentType("text/html;charset=GBK"); 本人沒試過。
對於JSP,是比較方便的,只需要在JSP最前部分按如下方式聲明:
<%@ pagecontentType="text/html;charset=GBK"%>
對於HTML,其和JSP檔案基本類似,也是在頁面最前部分按如下方式聲明:
<head>
<METAHTP-EQUIV="contentType" CONTENT="text/html;charset=GBK">
</head>
3.? 國際化資源檔的中文問題
一個Struts應用程式中,可以配置多個資源套件,無論是Action、ActionForm還是JSP都可以訪問這些包中的資源。資源套件就是由副檔名為.properties的檔案組成的一組具有相同首碼的檔案,如ApplicationResources_zh_CN.properties、ApplicationResources_zh.properties和ApplicationResources.properties。這些檔案就構成一個Struts的資源套件,它們都有一個統一的首碼ApplicationResources,凡是有相同首碼的資源檔就都屬於一個包。
當用MyEclipse編寫資源檔時,預設是不能儲存中文的,因為預設儲存編碼的格式是ISO-8859-1,這就需要修改為gb2312或者gbk編碼格式。Windons-->Preferences-->General -->Content Types-->Text-->JavaProperties File,在最下方把其Default encoding改為"UTF-8”,然後"update”就可以儲存中文了。但就這樣儲存的中文還是不能夠在頁面上使用的,因為Web容器預設是使用ISO-8859-1,也就會把中文用ISO-8859-1的格式發送給客戶頁面,顯示的還是亂碼,這就是JAVA國際化的問題。JAVA是支援unicode編碼格式的,unicode是國際統一通用編碼,所以不管什麼格式的編碼轉化為unicode編碼肯定不會顯示亂碼的。這個時候就是需要把資源檔的UTG-8編碼格式轉化為unicode編碼格式,而SUN公司又提供了這樣的一種工具。在JDK的安裝目錄bin下,有一個叫native2ascii可執行檔,這個是專門來進行資源檔轉碼的。開啟cmd,進入JDK的bin目錄下,把資源檔拷貝到該目錄下,執行該命令。比如:
native2ascii –encoding GBK ApplicationResources.propertiesApplicationResources_zh_CN.properties 就是把GBK編碼格式ApplicationResources.properties轉化為unicode編碼格式ApplicationResources_zh_CN.properties,這樣顯示頁面時就不會出現亂碼了。