所有,的Websphere掛螺紋 - 鎖監視器上WASJSPExtensionServletWrapper
我在JSF 2.0應用接收間歇掛起線程在WebSphere 8.5.5.5:
Thread Name
WebContainer : 8
State
Waiting on condition
Monitor
Owns Monitor Lock on com/ibm/ws/jsp/webcontainerext/ws/[email protected]
Java Stack
at java/lang/Thread.sleep(Native Method)
at java/lang/Thread.sleep(Thread.java:904(Compiled Code))
at com/ibm/ws/webcontainer/servlet/ServletWrapper.doDestroy(ServletWrapper.java:1019(Compiled Code))
at com/ibm/ws/webcontainer/servlet/ServletWrapperImpl.doDestroy(ServletWrapperImpl.java:337(Compiled Code))
at com/ibm/ws/webcontainer/servlet/ServletWrapper.prepareForReload(ServletWrapper.java:1112(Compiled Code))
at com/ibm/wsspi/webcontainer/servlet/GenericServletWrapper.prepareForReload(GenericServletWrapper.java:132(Compiled Code))
at com/ibm/ws/jsp/webcontainerext/AbstractJSPExtensionServletWrapper._checkForTranslation(AbstractJSPExtensionServletWrapper.java:529(Compiled Code))
at com/ibm/ws/jsp/webcontainerext/AbstractJSPExtensionServletWrapper.checkForTranslation(AbstractJSPExtensionServletWrapper.java:294(Compiled Code))
at com/ibm/ws/jsp/webcontainerext/AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:163(Compiled Code))
這WebContainer #8
線程被阻塞大致72其他Web容器由於爭用其1個監視器鎖定而導致的線程。這是鎖定共享對象WASJSPExtensionServletWrapper
。
我假設由於上述錯誤的位置,這是發生在JSP標記翻譯期間,可能是緩慢運行的自定義標記或Rich Faces 4.3.2標記(AJAX調用a4j)導致Servlet重新加載緩慢並由於上下文切換而掛起?
在自定義標記中,由於對VariableResolver的棄用調用,我隨後更改爲ELResolver,導致偶爾出現TreeMap錯誤。而在富面臨AJAX調用我看到這個不同步代碼:
Map<String,String> data = new HashMap<String,String>();
data.put("customerSum", collectedBalance);
其次是這個代碼做一個GET:
JSONObject dataToJSON = new JSONObject()
dataToJSON.put("customerSum", data.get("customerSum"));
不過,我有一個可怕的時間中的: (1 )通過確鑿證據證明冒煙槍是TreeMap.put
或HashMap.put
或得到? (2)重現了這個問題?
什麼可能導致Servlet在JSP標籤_checkForTranslation之後重新加載?這可能是因爲遇到錯誤或NullPointerException或無限循環而重新加載?我在SystemOut.log中沒有看到任何清楚的內容。
因爲我改變了ElResolver,並刪除了與該HashMap的AJAX調用,我還沒有看到這個問題。但是,我需要能夠證明根本原因? (我也不會介意能否退回AJAX調用?)我也不確定這是否可能是由於大量的請求(由於AJAX調用的次數?)而導致的,而不是由於運行緩慢自定義標籤?但交通是適度的。
任何幫助或建議將不勝感激。 。 。謝謝。
PS我知道Rich Faces已經報廢,但在未來的項目中取代它需要時間。 。 。
UPDATE 8/3/2016:今天我們注意到生產服務器中的JSP頁面.class文件不斷被重新編譯和重新加載。這不是必要的,也不應該如此。研究這是否可能會設置在銷燬/重新加載JSP頁面Servlet時導致間歇性掛起線程的條件。