开发者

JSF 1.2 app not working with GlassFish v3

Migrating to GlassFish v3 / JDK6u18 / NB6.8 makes me a lot of headscratching, and I'm quite confused now. My project (JSF, RichFaces, Spring) works fine with GlassFish v2 + JDK6u17. I'm using the same JAR's, and the same JSF version.

One of my JSP's contains a <rich:tree>, this renders just fine, but if I post the values on this page I get:

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)
        ....

On my other page, something similar is happening. It contains a <h:selectManyCheckbox>, which rerenders some other stuff in case of a value-change. So in case of a submit I get something like this:

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.开发者_StackOverflowEventValueExpression.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)
        ....

I've tried to combine versions of JSF/RichFaces, but it just resulted all the same.

Any help would be appreciated!


Glassfish v3 has JSF 2.0 bundled, so that might be causing troubles. If you want to use JSF 1.2 with Glassfish v3 you have to add a sun-web.xml in the WEB-INF folder:

<?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>


Exceptiion Trace :-
On thread: 'WebContainer : 0'
com.ibm.websphere.servlet.error.ServletErrorReport: java.lang.NoSuchMethodError: javax/faces/component/UIViewRoot.getComponentResources&#40;Ljavax/faces/context/FacesContext&#59;Ljava/lang/String&#59;&#41;Ljava/util/List&#59;
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1764)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)

I have use the following dependency

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

Solution : if you using WebSphere 7.0 application server you have change the follwing setting

1)start the WebSphere 7.0 2)run as adminstartor 3)server-->websphere application servers-->server1--(open our application EAR file)

4) classloader policy drop down change to "mutiple"

5)class loading mode drop down chnage to "class loaded with local class loader first (parent last)

it will start the application

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜