2014-07-09 36 views
-1

任何人都知道如何解決這個問題?錯誤undeploy tomcat7.0.54 + jsf 2.2

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. 
+0

這是一個內存泄漏問題,它不是特定於技術或服務器。你有沒有試過在你的服務器上運行一個簡單的hello world應用程序?試一下,告訴出了什麼問題。 –

回答

0

你沒有告訴我們關於你的應用程序的一些東西 - 你是否手動啓動了一個線程,如在例外中暗示的那樣?這是一些東西,在Java EE中不應該這樣做,因爲組件(例如JSF組件)由容器處理。如果你手動執行,它們不會被破壞,因此可能導致內存泄漏。

+0

javaweb用jsf 2.2,primefaces5.0,hibernate 4.3.5 tomcat 7.0.54 – DeividNn

0

這是Apache Tomcat服務器的問題,因此您可以更改Tomcat服務器的版本。 Apache Tomcat的當前版本8.0.9有這個問題,但8.0.3.0沒有。我正在使用Netbeans IDE(8.1),因此Apache Tomcat 8.0.3.0也隨之提供。

0

這是由ContextListener引起beeing加入兩次ServletContext中:

com.sun.faces.config.ConfigureListener

它一旦被com.sun.faces.config.FacesInitializer 加入其次通過org.apache.jasper.servlet.JasperInitializer

爲了防止JasperInitializer添加監聽器,你必須告訴它跳過TLD掃描javax.faces的* .jar:

在你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>