Faces Servlet抛出异常java.lang.StackOverflowError

Joe*_*ean 6 configuration jboss seam web-applications

好吧,自从加入这个网站以来,我遇到了我的第一个StackOverflowError,我认为这是必须的帖子:-).我的环境是Seam 2.0.1.GA,JBoss 4.2.2.GA,我正在使用JSF.我正在从facelets视图转换为JSP,以利用现有站点上使用的一些现有JSP标记.我更改了faces-config.xml和web.xml配置文件,并在尝试呈现jsp页面时开始收到以下错误.有人有什么想法?

2008-09-17 09:45:17537 DEBUG [org.jboss.seam.contexts.FacesLifecycle]开始为/form_home.jsp 2008-09-17 09 JSF请求:45:17587 ERROR [org.apache.catalina.core. ContainerBase.[jboss.web].[本地主机].[/].[面临的Servlet]为的servlet] Servlet.service()面临的Servlet抛出异常java.lang.StackOverflowError的在org.apache.catalina.core.ApplicationHttpRequest.getAttribute( ApplicationHttpRequest.java:210)在org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)在org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)在org.apache.catalina .core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)...

我的faces-config.xml文件现在为空,没有FaceletsViewHandler:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 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">

</faces-config>
Run Code Online (Sandbox Code Playgroud)

我的Web.xml文件:

<?xml version="1.0"?>
<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">
 <!-- Ajax4jsf -->
 <context-param>
  <param-name>org.richfaces.SKIN</param-name>
  <param-value>blueSky</param-value>
 </context-param>
  <!-- Seam -->
 <listener>
  <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
 </listener>


 <filter>
  <filter-name>Seam Filter</filter-name>
  <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
 </filter>

 <filter-mapping>
  <filter-name>Seam Filter</filter-name>
  <url-pattern>*.jsp</url-pattern>
 </filter-mapping>

 <servlet>
    <servlet-name>Seam Resource Servlet</servlet-name>
     <servlet-class>org.jboss.seam.servlet.SeamResourceServlet
     </servlet-class>
 </servlet>
 <servlet-mapping>
   <servlet-name>Seam Resource Servlet</servlet-name>
   <url-pattern>/seam/resource/*</url-pattern>
 </servlet-mapping>
 <!-- Seam end --> 

 <!-- JSF -->
 <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jsp</param-value>
 </context-param>

 <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>*.jsp</url-pattern> 
 </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

Joe*_*ean 9

我能够弄清楚这个问题.显然,您无法将web.xml配置为具有与Javax.faces.DEFAULT_SUFFIX相同的.jsp的param值作为Faces Servlet url-pattern(*.jsp).如果您将url-pattern更改为.jspx或更改为/ whateverdirnameyouwant /应用程序启动时没有堆栈溢出错误.(注意:关键是DEFAULT_SUFFIX和Faces Servlet url-pattern无论它们是什么都不能相同.)希望这可以帮助其他遇到这个特定问题的人.