Hi there,

I am having a problem with inheritance, aop and message driven beans (using 
JBoss 4.0.4 GA with the EJB 3 option enabled).

I defined a couple of MDBs which listen to some topics and do nothing than log 
a little hello in the first instance. So my code looks something like:


  | @MessageDriven(
  |     description="My Message driven bean to test JMS implementation. It does 
nothing but loggin the log4j.",
  |     name="LogOneMDB",
  |     activationConfig={
  |         @ActivationConfigProperty(propertyName = "destinationType", 
propertyValue = "javax.jms.Topic")
  |         ,@ActivationConfigProperty(propertyName = "destination", 
propertyValue = "topic/one") 
  |         
,@ActivationConfigProperty(propertyName="Durability",propertyValue="Durable")//subscription
  |         
,@ActivationConfigProperty(propertyName="subscriptionName",propertyValue = 
"LogOneMDB")
  |         ,@ActivationConfigProperty(propertyName="clientID",propertyValue = 
"LogOneMDB")
  |     }
  | )
  | public class LogOneMDB extends AbstractMDB implements MessageListener{}
  | 


  | @MessageDriven(
  |     description="My Message driven bean to test JMS implementation. It does 
nothing but loggin the log4j.",
  |     name="LogTwoMDB",
  |     activationConfig={
  |         @ActivationConfigProperty(propertyName = "destinationType", 
propertyValue = "javax.jms.Topic")
  |         ,@ActivationConfigProperty(propertyName = "destination", 
propertyValue = "topic/two") 
  |         
,@ActivationConfigProperty(propertyName="Durability",propertyValue="Durable")//subscription
  |         
,@ActivationConfigProperty(propertyName="subscriptionName",propertyValue = 
"LogTwoMDB")
  |         ,@ActivationConfigProperty(propertyName="clientID",propertyValue = 
"LogTwoMDB")
  |     }
  | )
  | public class LogTwoMDB extends AbstractMDB implements MessageListener{}
  | 

and a (abstract) super class implementing the listener method:


  | class AbstractMDB {
  |         public void onMessage(final Message message) {
  |                  Logger.getLogger(this.getClass()).debug("Received a 
message.");
  |         }
  | }
  | 

If you deploy something like this and send a message to the topic(s) you end up 
with following exception:


  | 3459235 [ERROR][JMS SessionPool Worker-58][org.jboss.ejb3.mdb.MDB] 
Exception in JMSCI message listener
  | java.lang.IllegalAccessException: Class 
org.jboss.aop.joinpoint.MethodInvocation can not access a member of class 
com.your.package.AbstractMDB with modifiers "public"
  |         at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
  |         at java.lang.reflect.Method.invoke(Method.java:578)
  |         at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
  |         at 
org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
  |         at 
org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
  |         at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at 
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
  |         at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at 
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
  |         at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
  |         at 
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201)
  |         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.ejb3.mdb.MDB.localInvoke(MDB.java:865)
  |         at org.jboss.ejb3.mdb.MDB.localInvoke(MDB.java:844)
  |         at 
org.jboss.ejb3.mdb.MDB$MessageListenerImpl.onMessage(MDB.java:1074)
  |         at 
org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:266)
  |         at 
org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:902)
  |         at 
org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
  |         at org.jboss.mq.SpySession.run(SpySession.java:323)
  |         at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194)
  |         at 
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
  |         at java.lang.Thread.run(Thread.java:595)
  | 

Am I overseeing something or is this a bug of the EJB3 MDB implementation?

Thanks in advance for your help and comments.
Cheers,

Patrick


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3956593#3956593

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3956593


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to