天天看點

org.apache.catalina.connector.Request.parseParameters(Request.java:2446) NullPointerException異常處理

tomcat6.0.8 + jdk6 + struts1 

頁面有兩個異常的請求

兩個請求幾乎同步到達server。結果出現異常:

或者背景沒異常,前台第一個請求的response傳回的是第二個請求的結果。而第二次請求則沒有response。

經調試,發現兩次請求的request對象是同一對象。然後想起struts1是非線程安全的,而我在代碼中,為了讓一個action接收多個頁面的請求,把request對象寫成了全局對象。

struts1是非線程安全的。兩個同一時間的異步請求,會得到同一個request對象,兩個請求會造成沖突。

在execution方法中使用局部變量是最簡單的保證線程安全的方法了。也就是說在使用struts1的action時,不要在類中定義屬性。

把全局的request對象,放回execution方法中,變成局部變量,問題得到解決。

繼續閱讀