关于配置:Faces Servlet抛出异常java.lang.StackOverflowError

关于配置:Faces Servlet抛出异常java.lang.StackOverflowError

Faces Servlet threw exception java.lang.StackOverflowError

好的,自加入此网站以来,我遇到了第一个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:17,537 DEBUG
[org.jboss.seam.contexts.FacesLifecycle]
Begin JSF request for /form_home.jsp
2008-09-17 09:45:17,587 ERROR
[org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/].[Faces
Servlet]] Servlet.service() for
servlet Faces Servlet threw exception
java.lang.StackOverflowError
at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:210)
at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)
at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)
at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)
...

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

1
2
3
4
5
6
7
8
<?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>

还有我的Web.xml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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>

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


Java中的堆栈溢出几乎总是由无限递归/方法调用引起的。在给定堆栈跟踪的情况下,似乎反复调用'getAttribute()'直到崩溃。虽然我对您所使用的特定环境不太熟悉,但我建议您检查.jsp代码中是否存在任何此类行为(例如,两个相互调用的方法)


所以,我有一个类似的错误。对我来说,那是我有一个JSF项目,而且我正在弄乱文件扩展名。首先,我所有的Web文件都带有扩展名.jsp。这是可行的,但后来我希望它们全部都是.jsf,然后再继续使用.xhtml。在此过程中,我的web.xml文件更改为适应xhtml和jsf。更改web.xml文件很好。我得到StackOverflowError的原因是我有index.xhtml,其中包含指向header.jsf的ui.include标记。所以我有一个指向jsf文件的xhtml文件。我以为web.xml可以处理此问题,但是没有,我得到了StackOverflowError。因此,要解决此问题,现在我所有的JSF文件都具有扩展名.xhtml,并且嵌套的ui:include标记指向.xhtml文件。

另一方面,浏览器url可以很好地处理index.jsp,index.jsf,index.xhtml。因此,web.xml(具有针对jsp,jsf和xhtml的servlet映射)可以很好地处理浏览器的url,但不能解决我上面提到的问题。


推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2

    6000元教你黑盒5000+权限配置

    6000元教你黑盒5000+权限配置,,一系列的价格后,最经典的AMD双核处理器mdash;mdash;Athlon 64 X2 5000 +黑版mdash;mdash;目前的价格已经低至565