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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user