JSF 1.2应用程序不适用于GlassFish v3

JSF 1.2应用程序不适用于GlassFish v3,jsf,glassfish,richfaces,java,Jsf,Glassfish,Richfaces,Java,迁移到GlassFish v3/JDK6u18/NB6.8会让我感到非常困惑,现在我很困惑。我的项目(JSF、RichFaces、Spring)在GlassFishV2+JDK6u17上运行良好。我使用的是相同的JAR和相同的JSF版本 我的一个JSP包含一个,这呈现得很好,但是如果我在这个页面上发布值,我会得到: WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces

迁移到GlassFish v3/JDK6u18/NB6.8会让我感到非常困惑,现在我很困惑。我的项目(JSF、RichFaces、Spring)在GlassFishV2+JDK6u17上运行良好。我使用的是相同的JAR和相同的JSF版本

我的一个JSP包含一个
,这呈现得很好,但是如果我在这个页面上发布值,我会得到:

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception java.lang.IllegalArgumentException: In AbstractTreeDataModel rowIndex must be -1. at org.richfaces.model.AbstractTreeDataModel.setRowIndex(AbstractTreeDataModel.java:52) at org.ajax4jsf.component.UIDataAdaptor.setRowIndex(UIDataAdaptor.java:289) at javax.faces.component.UIData.visitColumnsAndRows(UIData.java:1544) at javax.faces.component.UIData.visitTree(UIData.java:1212) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457) at javax.faces.component.UIForm.visitTree(UIForm.java:333) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457) at javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:869) at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:439) .... 警告:StandardWrapperValve[Faces Servlet]:PWC1406:Servlet.service()用于Servlet Faces Servlet引发异常 java.lang.IllegalArgumentException:在AbstractTreeDataModel中,行索引必须为-1。 位于org.richfaces.model.AbstractTreeDataModel.setRowIndex(AbstractTreeDataModel.java:52) 位于org.ajax4jsf.component.uidataadapter.setRowIndex(uidataadapter.java:289) 位于javax.faces.component.UIData.visitColumnsAndRows(UIData.java:1544) 位于javax.faces.component.UIData.visitTree(UIData.java:1212) 位于javax.faces.component.UIComponent.visitTree(UIComponent.java:1457) 位于javax.faces.component.UIForm.visitTree(UIForm.java:333) 位于javax.faces.component.UIComponent.visitTree(UIComponent.java:1457) 位于javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:869) 位于org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:439) .... 在我的另一页,类似的事情正在发生。它包含一个
,如果值发生变化,它会重新引发一些其他内容。因此,在提交的情况下,我得到如下结果:

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception java.lang.NullPointerException at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:564) at org.ajax4jsf.component.EventValueExpression.getComponent(EventValueExpression.java:77) at org.ajax4jsf.component.EventValueExpression.getValue(EventValueExpression.java:130) at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2166) at com.sun.faces.renderkit.RenderKitUtils.renderPassThruAttributesOptimized(RenderKitUtils.java:608) at com.sun.faces.renderkit.RenderKitUtils.renderPassThruAttributes(RenderKitUtils.java:321) at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.renderOption(SelectManyCheckboxListRenderer.java:328) at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:177) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878) .... 警告:StandardWrapperValve[Faces Servlet]:PWC1406:Servlet.service()用于Servlet Faces Servlet引发异常 java.lang.NullPointerException 位于javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:564) 在org.ajax4jsf.component.EventValueExpression.getComponent(EventValueExpression.java:77)上 位于org.ajax4jsf.component.EventValueExpression.getValue(EventValueExpression.java:130) 位于javax.faces.component.UIComponentBase$AttributeMap.get(UIComponentBase.java:2166) 在com.sun.faces.renderkit.renderkitutiils.renderPassThruAttributesOptimized上(renderkitutiils.java:608) 在com.sun.faces.renderkit.renderkitutiils.renderPassThruAttributes上(renderkitutiils.java:321) 在com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.renderOption(SelectManyCheckboxListRenderer.java:328) 在com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:177) 位于javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878) .... 我曾尝试组合JSF/RichFaces的版本,但结果都一样


任何帮助都将不胜感激

glassfishv3已经绑定了jsf2.0,所以这可能会带来麻烦。如果要将JSF 1.2与Glassfish v3结合使用,必须在
web-INF
文件夹中添加
sun web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish
Application Server 3.0 Servlet 3.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app>
    <class-loader delegate="false"/>
    <property name="useBundledJsf" value="true"/>
</sun-web-app>

我已经使用了以下依赖项

commons-codec-1.3.jar
commons-httpclient-3.1.jar
cssparser-0.9.5.jar
guava-r07.jar
jsf-api-2.0.6-FCS.jar
jsf-impl-2.0.6-FCS.jar
jsr250-api-1.0.jar
richfaces-components-api-4.2.0.Final.jar
richfaces-components-ui-4.2.0.Final.jar
richfaces-core-api-4.2.0.Final.jar
richfaces-core-impl-4.2.0.Final.jar
sac-1.3.jar
解决方案:如果您使用WebSphere7.0ApplicationServer,则必须更改以下设置

1) 启动WebSphere7.0 2) 以管理员身份运行 3) 服务器-->websphere应用程序服务器-->服务器1--(打开我们的应用程序EAR文件)

4) 类加载器策略下拉列表更改为“multiple”

5) 类加载模式下拉菜单中的“首先使用本地类加载程序加载类(最后使用父类加载程序加载类)”

它将启动应用程序

commons-codec-1.3.jar
commons-httpclient-3.1.jar
cssparser-0.9.5.jar
guava-r07.jar
jsf-api-2.0.6-FCS.jar
jsf-impl-2.0.6-FCS.jar
jsr250-api-1.0.jar
richfaces-components-api-4.2.0.Final.jar
richfaces-components-ui-4.2.0.Final.jar
richfaces-core-api-4.2.0.Final.jar
richfaces-core-impl-4.2.0.Final.jar
sac-1.3.jar