3 Replies Latest reply: Apr 1, 2011 1:02 PM by Alexandre Santoro RSS

Help with MDB getting "Security Context is null" error when accessing the JMX RMI Adaptor

Alexandre Santoro Newbie

I am at my wit's end and would appreciate some help with this problem. Here's what's happening.

 

I am running JBoss AS 5.1.0.GA and have created an mdb with an onMessage() method that looks like this:

 

public void onMessage(Message m) {

 

     processMessage(m);

     LOG.info("finished processing " + m");

 

 

}

 

The processMessage method eventually gets the RMIAdaptor from jndi and makes a call to it.

When the code runs, it prints the LOG.info message in the log file suggesting it has finished processing, but after that fails with the following stack trace:

 

16:56:47,994 ERROR [JmsServerSession] Unexpected error delivering message delegator->JBossMessage[21256369076322305]:PERSISTENT, deliveryId=0

javax.ejb.EJBException: RuntimeException

    at org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:417)

    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:209)

    at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)

    at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:415)

    at org.jboss.ejb.Container.invoke(Container.java:1029)

    at sun.reflect.GeneratedMethodAccessor376.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)

    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)

    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)

    at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)

    at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)

    at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)

    at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)

    at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)

    at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.delivery(MessageEndpointInterceptor.java:249)

    at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:128)

    at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)

    at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:101)

    at $Proxy293.onMessage(Unknown Source)

    at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)

    at org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)

    at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)

    at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handleRun_494204024.invoke(SessionAspect_z_handleRun_494204024.java)

    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

    at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)

    at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)

    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

    at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)

    at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)

    at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:234)

    at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)

    at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

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

Caused by: java.lang.IllegalStateException: Security Context is null

    at org.jboss.ejb.plugins.SecurityActions$RunAsIdentityActions$2.pop(SecurityActions.java:143)

    at org.jboss.ejb.plugins.SecurityActions.popRunAsIdentity(SecurityActions.java:244)

    at org.jboss.ejb.plugins.RunAsSecurityInterceptor.process(RunAsSecurityInterceptor.java:139)

    at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:103)

    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)

 

I have tried setting the unauthenticatedIdentity property in the <application-context name="other"> element, as well as

including the <run-as> element in the ejb-jar.xml descriptor for this bean. No matter what I do I get the same error.

 

Does anyone what is it that causes this stack trace to happen AFTER the method uses the RMIAdaptor and exits? Am I missing some RMI configuration I am not aware of?

 

Thanks for your help in advance,

 

- Alex