【问题标题】:error undeploy tomcat7.0.54 + jsf 2.2错误取消部署tomcat7.0.54 + jsf 2.2
【发布时间】:2014-08-30 11:36:24
【问题描述】:

有人知道如何解决这个问题吗?

jul 09, 2014 9:22:01 AM org.apache.catalina.loader.
WebappClassLoader clearReferencesThreads
GRAVE: The web application [/jsf] appears to have started a thread named
 [Mojarra-WebResourceMonitor-1-thread-1] but has failed to stop it.
 This is very likely to create a memory leak.

【问题讨论】:

  • 这是一个内存泄漏问题,并非特定于技术或服务器。您是否尝试在您的服务器上运行一个简单的 hello world 应用程序?试一试,找出问题所在。

标签: java jsf jakarta-ee tomcat


【解决方案1】:

这是由于向 ServletContext 添加了两次 ContextListener 引起的:

com.sun.faces.config.ConfigureListener

它曾经由 com.sun.faces.config.FacesInitializer 添加 其次是 org.apache.jasper.servlet.JasperInitializer

要防止 JasperInitializer 添加侦听器,您必须告诉它跳过 javax.faces*.jar 中的 TLD 扫描:

在您的 context.xml 中,添加:

<JarScanner>
  <JarScanFilter defaultPluggabilityScan="false"
    pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan}, javax.faces-*.jar"
    tldSkip="${tomcat.util.scan.StandardJarScanFilter.jarsToSkip}, javax.faces-*.jar" />
</JarScanner>

【讨论】:

    【解决方案2】:

    这是 Apache Tomcat Server 的问题,因此您可以更改 Tomcat Server 的版本。 Apache Tomcat 的当前版本 8.0.9 有这个问题,但 8.0.3.0 没有。我使用的是 Netbeans IDE (8.1),所以 Apache Tomcat 8.0.3.0 附带了它。

    【讨论】:

      【解决方案3】:

      您没有告诉我们有关您的应用程序的一些信息 - 您是否手动启动了一个线程,如异常中所暗示的那样?这是在 Java EE 中不应该做的事情,因为组件(例如 JSF 组件)是由容器处理的。如果您手动执行,它们不会被破坏,因此可能会导致内存泄漏。

      【讨论】:

      • javaweb with jsf 2.2, primefaces5.0,hibernate 4.3.5 tomcat 7.0.54
      猜你喜欢
      • 2015-01-05
      • 2012-06-09
      • 2010-12-08
      • 1970-01-01
      • 2011-06-21
      • 2016-03-24
      • 2016-09-01
      • 1970-01-01
      • 2016-06-20
      相关资源
      最近更新 更多