Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WASJSPExtensionServletWrapper上的Websphere挂起线程监视器锁_Java_Ajax_Multithreading_Websphere_Richfaces - Fatal编程技术网

Java WASJSPExtensionServletWrapper上的Websphere挂起线程监视器锁

Java WASJSPExtensionServletWrapper上的Websphere挂起线程监视器锁,java,ajax,multithreading,websphere,richfaces,Java,Ajax,Multithreading,Websphere,Richfaces,全部, 我在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/WASJSPExtensionServletWrapper@0x0000000109FF9FE0 Java Stack at java/lang/Thread.sle

全部,

我在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/WASJSPExtensionServletWrapper@0x0000000109FF9FE0
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
线程由于其1个监视器锁的争用而阻塞了大约72个其他WebContainer线程。这是锁定共享对象
WASJSPExtensionServletWrapper

我假设由于上面的错误位置,这是在JSP标记转换期间发生的,可能是在运行缓慢的自定义标记或RichFaces4.3.2标记(AJAX调用a4j)期间发生的,这会导致Servlet缓慢重新加载并由于上下文切换而挂起

在一个自定义标记中,由于对VariableResolver的调用不推荐,我偶尔会出现树映射错误,随后我将其更改为ELResolver。在RichFaces AJAX调用中,我看到了以下未同步的代码:

Map<String,String> data = new HashMap<String,String>();
data.put("customerSum", collectedBalance);
然而,我有一个可怕的时间来: (1) 通过确凿证据证明冒烟的枪是
TreeMap.put
HashMap.put
或get? (2) 复制问题

什么会导致Servlet在JSP标记\u checkForTranslation之后立即重新加载?这可能是由于遇到错误、NullPointerException或无限循环而导致的重新加载吗?我在SystemOut.log中看不清楚任何内容

自从我改为ElResolver并用HashMap删除了AJAX调用之后,我就没有看到这个问题。然而,我需要证明根本原因?(我也不介意能够放回AJAX调用吗?)?但交通量不大

任何帮助或建议都将不胜感激。多谢各位

PS我知道Rich Faces是生命的终结,但替换它需要时间,在未来的项目中可能


更新8/3/2016:今天我们注意到生产服务器中的JSP页面.class文件正在不断地重新编译和加载。这是没有必要的,也不应该如此。调查这是否会设置在销毁/重新加载JSP页面servlet时导致间歇性挂起线程的条件。

对于每个请求重新编译的JSP,您应该查看APAR PI12939,看看是否适用于您的环境

如果JSP最初是使用一个用户编译的,而服务器在另一个用户中运行,那么JSP容器可能很难更新.class文件的时间戳……因此,它会认为JSP在每个请求上都过时,并尝试重新翻译和重新编译。可以设置一个JSP属性来缓解这种情况:

要启用此行为,必须使用以下JSP属性 设置为“真”: 在重新编译之前删除类文件

在应用程序的ibm-web-ext.xml文件中设置该JSP属性。请注意,如果要更新已安装的应用程序,请更新嵌套在配置文件的config目录而不是installedApps目录中的ibm-web-ext.xml文件的版本


另一个选项是将reloadEnabled JSP属性设置为false。这将阻止JSP容器不断检查JSP是否需要重新编译。然而,这只是掩盖了真正的问题。

对于每个请求重新编译的JSP,您应该查看APAR PI12939,看看是否适用于您的环境

如果JSP最初是使用一个用户编译的,而服务器在另一个用户中运行,那么JSP容器可能很难更新.class文件的时间戳……因此,它会认为JSP在每个请求上都过时,并尝试重新翻译和重新编译。可以设置一个JSP属性来缓解这种情况:

要启用此行为,必须使用以下JSP属性 设置为“真”: 在重新编译之前删除类文件

在应用程序的ibm-web-ext.xml文件中设置该JSP属性。请注意,如果要更新已安装的应用程序,请更新嵌套在配置文件的config目录而不是installedApps目录中的ibm-web-ext.xml文件的版本

另一个选项是将reloadEnabled JSP属性设置为false。这将阻止JSP容器不断检查JSP是否需要重新编译。然而,这只是掩盖了真正的问题

JSONObject dataToJSON = new JSONObject()
dataToJSON.put("customerSum", data.get("customerSum"));