1

JSF1.2 を使用して開発されたアプリケーションを WAS7 上の JSF2.0 に移行しています。また、ビュー テクノロジを JSP として使用することにしました。以下で提案されているように、必要な変更 (jars、web.xml、faces-config.xml) を行いました。

JSF 1.2 から JSF 2.0 への移行

また、richfaces コンポーネントを使用しており、ライブラリを richfaces3.3.3 にアップグレードしました。

h:commandlink と h:commandbutton の使用中に次の例外が発生します。

Exception created : javax.servlet.ServletException
                at javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
                at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
                at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
                at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
                at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
                at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
                at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
                at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
                at com.xxx.yyy.webapp.security.LoginFilter.doFilter(LoginFilter.java:201)
                at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
                at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
                at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
                at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)
                at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
                at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
                at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
                at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
                at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
                at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
                at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
                at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
                at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
                at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
                at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
                at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
                at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
                at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
                at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
                at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646)
Caused by: java.lang.UnsupportedOperationException
                at javax.faces.context.FacesContext.getELContext(FacesContext.java:223)
                at javax.faces.application.NavigationCase.getToViewId(NavigationCase.java:264)
                at com.sun.faces.application.NavigationHandlerImpl.determineViewFromActionOutcome(NavigationHandlerImpl.java:580)
                at com.sun.faces.application.NavigationHandlerImpl.findExactMatch(NavigationHandlerImpl.java:345)
                at com.sun.faces.application.NavigationHandlerImpl.getViewId(NavigationHandlerImpl.java:279)
                at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:159)
                at org.apache.myfaces.custom.redirectTracker.RedirectTrackerNavigationHandler.handleNavigation(RedirectTrackerNavigationHandler.java:40)
                at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
                at javax.faces.component.UICommand.broadcast(UICommand.java:315)
                at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
                at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
                at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
                at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
                at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
                at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
                at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
                at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
                at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

根本的な原因は式言語に関連しているようです。推奨される WEB-INF/lib に el-api.jar がなく、サーバー レベルとアプリケーション レベルの両方でクラスローダー ポリシーを PARENT_LAST に設定しました。WAS7 の lib ディレクトリには j2ee5 jar があります。

4

0 に答える 0