2013-03-17 44 views
0

我尝试让JSF与JBoss(5.1)一起运行,但是我遇到了两个问题。 要么我得到一个未在Face-config.xml中配置的FaceletViewHandler的异常,要么得到一个无数的StackOverflowError。使用JBoss设置JSF时出现StackOverflowError

错误:

00:48:30,767 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception 
java.lang.StackOverflowError 
.... 
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:279) 
... 

我认为它会是与我的web.xml配置或我的faces-config.xml中

web.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <display-name>test1</display-name> 
    <context-param> 
     <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
     <param-value>server</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
     <param-value>.xhtml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
    </listener> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
</web-app> 

我发现了一个'解决方案',表示url patter应该与默认后缀不同 - 它没有帮助

在faces-config.xml:

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> 
    <application> 
     <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> 
    </application> 
</faces-config> 
在pom.xml

.... 
    <dependency> 
     <groupId>com.sun.facelets</groupId> 
     <artifactId>jsf-facelets</artifactId> 
     <version>1.1.15</version> 
    </dependency> 
.... 

什么是错的

问候D3

回答

0

我发现解决方案 - 至少有一个解决方法。 我从JDK7改回JDK6,现在一切正常。

我认为需要重新设置项目并非常小心地检查所有包含的库的版本。

1

的StackOverflowError告诉我们,线程不具有堆栈提供足够的内存。也许你会使用-Xss JVM选项(例如-Xss256k甚至更多)来增加可用于线程的堆栈。

您应该将其设置在run.conf.bat或run.conf.sh中,具体取决于您的操作系统。

您还可以尝试通过将javax.faces.STATE_SAVING_METHOD从“server”设置为“client”来节省服务器资源。

+0

我完全同意一般,但我得到一个无限数量的StackOverFlowError,配置似乎导致像一个不定式的循环,因此增加内存不会帮助。 – ABX 2013-03-17 18:57:09

相关问题