关于配置: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,但不能解决我上面提到的问题。


推荐阅读

    linux进入网站命令?

    linux进入网站命令?,系统,环境,网站,传播,终端,命令,窗口,快捷键,界面,虚拟

    配置linux命令行颜色?

    配置linux命令行颜色?,系统,地址,电脑,分析,代码,信息,设备,终端,颜色,命令,L

    linux配置相关的命令?

    linux配置相关的命令?,网络,地址,系统,工具,代码,状态,命令,信息,管理,初级,

    linux配置网卡的命令?

    linux配置网卡的命令?,网络,信息,系统,工具,代码,地址,设备,工作,电脑,最新,i

    linux入侵网站命令?

    linux入侵网站命令?,工作,地址,信息,系统,数字,网站,名称,命令,网络,密码,lin

    配置网关的命令linux?

    配置网关的命令linux?,地址,系统,网络,代码,信息,环境,命令,网关,服务,电脑,

    linux配置ip命令行?

    linux配置ip命令行?,地址,系统,代码,网络,设备,工具,服务,密码,命令,网卡,lin

    linux配置文件夹命令?

    linux配置文件夹命令?,地址,系统,工作,信息,命令,标准,服务,名称,位置,文件,l

    查询linux配置的命令?

    查询linux配置的命令?,系统,网络,地址,情况,信息,电脑,中科,状态,服务,命令,

    查询linux配置的命令?

    查询linux配置的命令?,系统,网络,地址,情况,信息,电脑,中科,状态,服务,命令,

    linux命令重命名配置?

    linux命令重命名配置?,图片,名称,名字,文件,软件,代码,命令,文件名,脚本,批

    linux配置双ip命令?

    linux配置双ip命令?,地址,系统,代码,网络,设备,信息,中心,电脑,密码,命令,Lin

    linux配置自定义命令?

    linux配置自定义命令?,服务,系统,状态,策略,周期,地方,标准,新增,环境,工具,L

    linux网站根目录命令?

    linux网站根目录命令?,系统,一致,设备,网站,目录,根目录,信息,标准,位置,电

    linux双网卡配置命令?

    linux双网卡配置命令?,网络,状态,地址,信息,通信,标准,通讯,对外,机电,环境,L

    linux命令配置串口?

    linux命令配置串口?,设备,系统,平台,工具,名字,通信,电脑,地址,项目,信息,Lin

    linux访问网站的命令?

    linux访问网站的命令?,地址,系统,服务,工作,网站,命令,网络,管理,信息,网址,L

    linux的配置网络命令?

    linux的配置网络命令?,地址,系统,网络,代码,服务,管理,密码,信息,基础,命令,l

    linux内核配置的命令?

    linux内核配置的命令?,系统,工作,管理,地址,时间,命令,信息,设备,目录,内核,

    linux挂载命令配置?

    linux挂载命令配置?,系统,网络,设备,服务,位置,电脑,名字,密码,目录,命令,Lin