You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Manu T George (JIRA)" <ji...@apache.org> on 2008/01/24 09:51:36 UTC

[jira] Commented: (GERONIMO-3780) MDB unable to access JNDI in ejbPostCreate

    [ https://issues.apache.org/jira/browse/GERONIMO-3780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12561975#action_12561975 ] 

Manu T George commented on GERONIMO-3780:
-----------------------------------------

This error occurs with the following stacktrace

14:17:43,562 ERROR [OpenEJB] The bean instance threw a system exception:java.la
g.NullPointerException
java.lang.NullPointerException
        at org.apache.xbean.naming.context.ContextFlyweight.lookup(ContextFlywe
ght.java:44)
        at org.apache.xbean.naming.context.ContextFederation.getFederatedBindin
(ContextFederation.java:71)
        at org.apache.xbean.naming.context.AbstractFederatedContext.getBinding(
bstractFederatedContext.java:63)
        at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractConte
t.java:129)
        at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractConte
t.java:611)
        at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractConte
t.java:152)
        at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractConte
t.java:597)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.mxi.mx.common.geronimo.ejb.DummyMessageDrivenBean.ejbCreate(Dumm
MessageDrivenBean.java:38)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invo
ation.invoke(ReflectionInvocationContext.java:146)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proc
ed(ReflectionInvocationContext.java:129)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(Intercep
orStack.java:67)
        at org.apache.openejb.core.mdb.MdbInstanceFactory.constructBean(MdbInst
nceFactory.java:249)
        at org.apache.openejb.core.mdb.MdbInstanceFactory.createInstance(MdbIns
anceFactory.java:117)
        at org.apache.openejb.core.mdb.EndpointHandler.<init>(EndpointHandler.j
va:79)
        at org.apache.openejb.core.mdb.EndpointFactory.createEndpoint(EndpointF
ctory.java:68)
        at org.apache.activemq.ra.ServerSessionPoolImpl.createEndpoint(ServerSe
sionPoolImpl.java:90)
        at org.apache.activemq.ra.ServerSessionPoolImpl.createServerSessionImpl
ServerSessionPoolImpl.java:76)
        at org.apache.activemq.ra.ServerSessionPoolImpl.getServerSession(Server
essionPoolImpl.java:116)
        at org.apache.activemq.ActiveMQConnectionConsumer.dispatch(ActiveMQConn
ctionConsumer.java:136)
        at org.apache.activemq.ActiveMQConnection.onCommand(ActiveMQConnection.
ava:1479)
        at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseC
rrelator.java:95)
        at org.apache.activemq.transport.TransportFilter.onCommand(TransportFil
er.java:65)
        at org.apache.activemq.transport.vm.VMTransport.syncOneWay(VMTransport.
ava:96)
        at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java
83)
        at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.j
va:47)
        at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorr
lator.java:60)
        at org.apache.activemq.broker.TransportConnection.dispatch(TransportCon
ection.java:1138)
        at org.apache.activemq.broker.TransportConnection.processDispatch(Trans
ortConnection.java:805)
        at org.apache.activemq.broker.TransportConnection.dispatchSync(Transpor
Connection.java:770)
        at org.apache.activemq.broker.region.PrefetchSubscription.dispatch(Pref
tchSubscription.java:404)
        at org.apache.activemq.broker.region.QueueSubscription.dispatch(QueueSu
scription.java:172)
        at org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchS
bscription.java:129)
        at org.apache.activemq.broker.region.Queue.addSubscription(Queue.java:1
1)
        at org.apache.activemq.broker.region.AbstractRegion.addConsumer(Abstrac
Region.java:233)
        at org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBro
er.java:337)
        at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.jav
:86)
        at org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBrok
r.java:78)
        at org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.jav
:86)
        at org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBr
kerFilter.java:96)
        at org.apache.activemq.broker.TransportConnection.processAddConsumer(Tr
nsportConnection.java:586)
        at org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:313

        at org.apache.activemq.broker.TransportConnection.service(TransportConn
ction.java:294)
        at org.apache.activemq.broker.TransportConnection$1.onCommand(Transport
onnection.java:185)
        at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseC
rrelator.java:95)
        at org.apache.activemq.transport.TransportFilter.onCommand(TransportFil
er.java:65)
        at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.jav
:201)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner
java:117)
        at org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRun
er.java:26)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.j
va:44)
        at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Wo
ker.runTask(ThreadPoolExecutor.java:665)
        at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Wo
ker.run(ThreadPoolExecutor.java:690)
        at java.lang.Thread.run(Thread.java:595)


The reason for this is that EjbDeployment ejbDeployment = deploymentInfo.get(EjbDeployment.class); return ejbDeployment as null in the GeronimoThreadContextListener. The reason for this being that
 EjbDeployment is set in the CoreDeploymentInfo in the start() method of EjbDeployment which is called by the EjbDeploymentGbean in the main thread. However before this thread does this the VMTransport thread starts accepting messages from the queue and creates Mdb instances which then throw the exception given above

To replicate this error create an mdb and do a resource lookup in the ejbPostCreate. Put a large no of messages in the queue that the mdb listens on and kill the server before all the messages are processed.
Restart the server to get the error. This is a timing error so you may need to do it many times before it can be reproduced.


> MDB unable to access JNDI in ejbPostCreate
> ------------------------------------------
>
>                 Key: GERONIMO-3780
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-3780
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: OpenEJB
>    Affects Versions: 2.1
>         Environment: All
>            Reporter: Manu T George
>
> An MDB is unable to access JNDI in ejbPostCreate if there are messages in the queue to which it is listening during server startup, say after a server crash 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.