[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1264) Session preDestroyContext Event causing exception

Keith Naas (JIRA) jira-events at lists.jboss.org
Fri Apr 27 13:11:40 EDT 2007


Session preDestroyContext Event causing exception
-------------------------------------------------

                 Key: JBSEAM-1264
                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1264
             Project: JBoss Seam
          Issue Type: Bug
    Affects Versions: 1.2.1.GA
            Reporter: Keith Naas
            Priority: Minor


This is probably the wrong thing to do for what we need...but we did encounter this interesting error.

We registered an event on the preDestroyContext.SESSION where a stateless EJB is called to delete some items from a database.

    <event type="org.jboss.seam.preDestroyContext.SESSION">
        <action expression="#{service.releaseDocuments}"/>
    </event>    

When EJBs are passivated, this event appears to be kicking off.  But since the FacesContext is null, we get a NullPointerException from com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke.

It looks like the FaceContext is null when it is called through the passivate interceptor, but it is calling the previous cachedMethodBinding which was generated when the FaceContext was not null.  
 
Seems like the method should be changed to something like this.

         private javax.faces.el.MethodBinding getFacesMethodBinding(Class[] types, Object... args)
         {
            FacesContext context = FacesContext.getCurrentInstance();

            if (cachedMethodBinding==null || (context == null && !(cachedMethodBinding instanceof UnifiedELMethodBinding)))
            {
               cachedMethodBinding = context==null ? 
                     new UnifiedELMethodBinding(expression, types) : 
                     context.getApplication().createMethodBinding(expression, types);
            }
            return cachedMethodBinding;            
         }


11:54:08,526 ERROR [SimpleStatefulCache] problem passivation thread
java.lang.RuntimeException: java.lang.NullPointerException: FacesConext -> null
	at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:160)
	at org.jboss.ejb3.stateful.StatefulContainer.invokePrePassivate(StatefulContainer.java:351)
	at org.jboss.ejb3.stateful.StatefulBeanContext.prePassivate(StatefulBeanContext.java:178)
	at org.jboss.ejb3.cache.simple.StatefulSessionFilePersistenceManager.passivateSession(StatefulSessionFilePersistenceManager.java:328)
	at org.jboss.ejb3.cache.simple.SimpleStatefulCache.passivate(SimpleStatefulCache.java:194)
	at org.jboss.ejb3.cache.simple.SimpleStatefulCache$SessionTimeoutTask.run(SimpleStatefulCache.java:129)
Caused by: java.lang.NullPointerException: FacesConext -> null
	at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:72)
	at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:148)
	at org.jboss.seam.core.Events.raiseEvent(Events.java:63)
	at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:215)
	at org.jboss.seam.contexts.Lifecycle.endCall(Lifecycle.java:72)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:117)
	at org.jboss.seam.intercept.RootInterceptor.invokeAndHandle(RootInterceptor.java:81)
	at org.jboss.seam.intercept.SessionBeanInterceptor.prePassivate(SessionBeanInterceptor.java:59)
	at sun.reflect.GeneratedMethodAccessor1059.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.ejb3.interceptor.LifecycleInvocationContextImpl.proceed(LifecycleInvocationContextImpl.java:131)
	at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:156)
	... 5 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list