Jsf 错误500:WAS 7中的java.lang.StackOverflower错误
我正在尝试在Websphere服务器上运行世界上最简单的JSF应用程序。该应用程序由两个xhtml文件和web.xml文件组成。该应用程序的编译、构建和安装没有任何问题。当我尝试在浏览器中查看页面时,我得到: 错误500:java.lang.StackOverflower错误 页面上和日志中都没有显示其他内容。我在谷歌上搜索了几个小时,但找不到解决办法 这是我的web.xml文件:Jsf 错误500:WAS 7中的java.lang.StackOverflower错误,jsf,jakarta-ee,websphere,websphere-7,Jsf,Jakarta Ee,Websphere,Websphere 7,我正在尝试在Websphere服务器上运行世界上最简单的JSF应用程序。该应用程序由两个xhtml文件和web.xml文件组成。该应用程序的编译、构建和安装没有任何问题。当我尝试在浏览器中查看页面时,我得到: 错误500:java.lang.StackOverflower错误 页面上和日志中都没有显示其他内容。我在谷歌上搜索了几个小时,但找不到解决办法 这是我的web.xml文件: <context-param> <param-name>javax.faces.D
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</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>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
javax.faces.DEFAULT_后缀
.xhtml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.jsf
Facesservlet
*.xhtml
下面是JSF页面:
<f:view>
<h:form>
<h:panelGrid columns="1">
<h:outputLabel value="Carrier" />
<h:outputLabel value="Item Number: " />
<h:outputLabel value="Postal Code: " />
<h:outputLabel value="Quantity: " />
</h:panelGrid>
</h:form>
</f:view>
这是一个如此简单的应用程序,我无法想象它为什么不能运行。非常感谢您的帮助
哦,让我补充一下,该应用程序在Glassfish和WebPere CE上运行得非常好,只是在WebSphereExpress v7上运行得不好。当然,我需要它在Websphere Express v7上运行。显然,实际的视图文件没有.jspx
扩展名,而是.xhtml
扩展名。因此,FacesServlet
将在每次调用自身的无限循环中运行,最终导致内存堆栈溢出
要解决此问题,您需要从web.xml
中删除该条目:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>
坚持在URL中使用.xhtml
扩展名,就像这样
更新:我的错误。WAS7根本不支持JSF2.0。它只支持JSF1.2。另见。您需要JSP文件而不是Facelets(XHTML)文件。您也不能利用JSF2.0的优势 要让JSF2.0在WAS7中工作,您需要将其绑定到webapp的
/WEB-INF/lib
,并配置WAS类加载器策略。另见
即使WebSphere7不正式支持JSF2.0,您也可以让它在降级模式下工作。按照以下步骤让它在您的WebSphere7版本上运行
- 升级至至少7.0.0.13版
- 在WEB-INF/lib目录中发送Mojara JAR文件
- 将WAR类加载器设置为PARENT_LAST
- 将EAR类加载器设置为PARENT_LAST和APPLICATION
.jspx
,而是扩展名.xhtml
。因此,FacesServlet
将在每次调用自身的无限循环中运行,最终导致内存堆栈溢出
要解决此问题,您需要从web.xml
中删除该条目:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>
坚持在URL中使用.xhtml
扩展名,就像这样
更新:我的错误。WAS7根本不支持JSF2.0。它只支持JSF1.2。另见。您需要JSP文件而不是Facelets(XHTML)文件。您也不能利用JSF2.0的优势 要让JSF2.0在WAS7中工作,您需要将其绑定到webapp的
/WEB-INF/lib
,并配置WAS类加载器策略。另见
即使WebSphere7不正式支持JSF2.0,您也可以让它在降级模式下工作。按照以下步骤让它在您的WebSphere7版本上运行
- 升级至至少7.0.0.13版
- 在WEB-INF/lib目录中发送Mojara JAR文件
- 将WAR类加载器设置为PARENT_LAST
- 将EAR类加载器设置为PARENT_LAST和APPLICATION
如果出于某种原因,您需要使用JSF 1.2而不是2.0 您可以尝试将库添加到项目中 并将以下内容添加到faces config.xml:
<faces-config>
.
.
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
.
.
</faces-config>
.
.
com.sun.facelets.FaceletViewHandler
.
.
现在,如果出于某种原因,您需要使用jsf1.2而不是2.0,那么您可以在jsf1.2下使用.xhtml而不是.jsp 您可以尝试将库添加到项目中 并将以下内容添加到faces config.xml:
<faces-config>
.
.
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
.
.
</faces-config>
.
.
com.sun.facelets.FaceletViewHandler
.
.
现在您可以在JSF1.2下使用.xhtml而不是.jsp,谢谢BalusC。我确实将.xhtml作为参数值,并且得到了相同的错误。在阅读了另一个网站上的评论后,我将其改为.jspx。不管我在上下文param/param值中输入了什么值,我仍然会得到stackoverflow错误。您的实际文件有什么扩展名?(应该是
.xhtml
)您在/WEB-INF/lib
中有哪些JAR?(因为您实际上应该没有人)您的faces config.xml
根声明是什么样子的?(对于JSF2.0,您需要一个与JSF2.0兼容的文件)没有jar文件,也没有faces-config.xml。我只是想让页面显示一些基本的jsf标记。我所有的页面/文件都有.xhtml扩展名。没有处理或逻辑,只有一个带有一些标记的简单页面。有什么问题吗?我已经尝试了所有的方法,就我所知,我所有的代码都是正确的。谢谢你。我确实将.xhtml作为参数值,并且得到了相同的错误。在阅读了另一个网站上的评论后,我将其改为.jspx。不管我在上下文param/param value中输入了什么值,我仍然会得到stackoverflow错误