webtier@glassfish.java.net

NullPointerException after redirect in PhaseListener

From: <forums_at_java.net>
Date: Wed, 24 Aug 2011 04:28:37 -0500 (CDT)

I have a typical SessionExpired phaseListener that checks for a session and
if there isn't one it creates one and redirects to the login page. The
following code does the redirection:

                ExternalContext ectx =
e.getFacesContext().getExternalContext();

                String newUrl =
ectx.encodeActionURL("/login/");

                try {

                    ectx.redirect(newUrl");

                } catch (IOException ex) {

                    throw new FacesException(ex);

                }

When I send an ajax request with an expired session the above code gets
excecuted and I get the following response:

    <?xml version='1.0' encoding='UTF-8'?>

    <partial-response>

    <error>

            <error-name>class
java.lang.NullPointerException</error-name>

            <error-message><![CDATA[]]></error-message>

        </error>

    </partial-response>

When debugging, ctx.getRenderKit() evaluates to null at
PartialViewContextImpl.java:441

java.lang.NullPointerException

    at
com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:441)

    at
com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:71)

    at
com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:582)

    at
javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:115)

    at
com.sun.faces.context.ExternalContextImpl.redirect(ExternalContextImpl.java:572)

    at
javax.faces.context.ExternalContextWrapper.redirect(ExternalContextWrapper.java:462)

    at
SessionExpiredPhaseListener.beforePhase(ViewExpiredPhaseListener.java:57)

    at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:228)

    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99)

    at
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)

    at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)

    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:349)

    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118)

    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)

    at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)

    at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)

    at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

    at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:110)

    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

    at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

    at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

    at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

    at java.lang.Thread.run(Thread.java:662)


--
[Message sent by forum member 'tkanters']
View Post: http://forums.java.net/node/836674