Приложение JSF 1.2 не работает с GlassFish v3 - PullRequest
0 голосов
/ 25 февраля 2010

Миграция на GlassFish v3 / JDK6u18 / NB6.8 вызывает у меня сильные головные боли, и сейчас я в замешательстве. Мой проект (JSF, RichFaces, Spring) отлично работает с GlassFish v2 + JDK6u17. Я использую те же JAR и ту же версию JSF.

Одна из моих JSP содержит <rich:tree>, это прекрасно выглядит, но если я опубликую значения на этой странице, я получу:

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

На моей другой странице происходит нечто подобное. Он содержит <h:selectManyCheckbox>, который переопределяет некоторые другие вещи в случае изменения значения. Так что в случае отправки я получаю что-то вроде этого:

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

Я пытался объединить версии JSF / RichFaces, но это все равно получилось.

Любая помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

В Glassfish v3 включен JSF 2.0, так что это может вызвать проблемы. Если вы хотите использовать JSF 1.2 с Glassfish v3, вам нужно добавить sun-web.xml в папку WEB-INF:

<?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>
0 голосов
/ 18 ноября 2013
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)

Я использую следующую зависимость

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

Решение: если вы используете сервер приложений WebSphere 7.0, вам нужно изменить следующий параметр

1) запустить WebSphere 7.0 2) запустить как админстартор 3) сервер -> серверы приложений websphere -> сервер1 - (откройте файл EAR нашего приложения)

4) Из раскрывающегося списка политики загрузчика классов изменилось значение "mutiple"

5) режим загрузки класса выпадает из chnage в класс, загружаемый локальным загрузчиком классов первым (родительский последний)

запустит приложение

...