[jboss-jira] [JBoss JIRA] Commented: (EJBTHREE-337) EJBException should set cause

Ortwin Glück (JIRA) jira-events at lists.jboss.org
Mon Oct 1 09:54:43 EDT 2007


    [ http://jira.jboss.com/jira/browse/EJBTHREE-337?page=comments#action_12379590 ] 
            
Ortwin Glück commented on EJBTHREE-337:
---------------------------------------

Seems that this bug is also in another place in EJB-3.0RC8 (sorry can't test this on later versions) when an EJBException caused by a NPE is propagated back through another EJB call as a EJBTransactionRolledbackException:

javax.ejb.EJBTransactionRolledbackException: java.lang.NullPointerException
 at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:93)
 at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
 at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.aspects.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:167)
 at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:100)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
 at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
 at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:181)
 at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:79)


> EJBException should set cause
> -----------------------------
>
>                 Key: EJBTHREE-337
>                 URL: http://jira.jboss.com/jira/browse/EJBTHREE-337
>             Project: EJB 3.0
>          Issue Type: Bug
>    Affects Versions: EJB 3.0 RC3
>         Environment: AS-4.0.3SP1, EJB-3.0RC3
>            Reporter: Ortwin Glück
>         Assigned To: William DeCoste
>            Priority: Trivial
>             Fix For: EJB 3.0 RC4 - PFD
>
>
> When a NullPointerException is thrown in a session bean method the EJBException only provides the wrapped exception via getCausedByException()  and not via the Throwable#getCause() method. That causes stack traces to abort at the EJBException and the real exception is lost. It makes debugging harder.
> Caused by: javax.ejb.EJBException: null; CausedByException is:
> 	null
> 	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:46)
> 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:70)
> 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:134)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:61)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:39)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:63)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:32)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:91)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:204)
> 	at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107)
> 	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:37)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
> 	at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:88)
> Painful Workaround:
> try {
>             bean.method();
> } catch (EJBException e) {
>             if (e.getCause() == null) e.initCause(e.getCausedByException());
>             throw e;
> }

-- 
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 jboss-jira mailing list