I test it in another environment, also a very simple example of MDB using BMT
and throw RuntimeException.
But it does not work. :(

Here is My MDB code
@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destination",
propertyValue = "FooQueue"),
        @ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode",
propertyValue = "Auto-acknowledge")})
@TransactionManagement(TransactionManagementType.BEAN)
public class HelloMDB implements MessageListener {

    @Override
    public void onMessage(Message arg0) {
        System.out.println(1111111);
        throw new RuntimeException();
    }

}

And here is the info on console after the first Exception. and the message
does not redelivery.

java.rmi.RemoteException: The bean encountered a non-application exception;
nested exception is: 
        java.lang.RuntimeException
        at
org.apache.openejb.core.transaction.EjbTransactionUtil.handleSystemException(EjbTransactionUtil.java:154)
        at 
org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:434)
        at 
org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:387)
        at
org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:227)
        at
org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:168)
        at example.HelloMDB$LocalBeanProxy.onMessage(example/HelloMDB.java)
        at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123)
        at
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64)
        at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:861)
        at 
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169)
        at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:366)
        at
org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.RuntimeException
        at example.HelloMDB.onMessage(HelloMDB.java:24)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
        at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:126)
        at 
org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:42)
        at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:63)
        at
org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:69)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
        at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:176)
        at
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:95)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
        at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:138)
        at 
org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:416)
        ... 13 more
11 26, 2013 2:27:47 午後 org.apache.activemq.ActiveMQSession run
重大: error dispatching message: 
javax.ejb.EJBException
        at
org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:251)
        at
org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:168)
        at example.HelloMDB$LocalBeanProxy.onMessage(example/HelloMDB.java)
        at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123)
        at
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64)
        at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:861)
        at 
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169)
        at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:366)
        at
org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.rmi.RemoteException: The bean encountered a non-application
exception; nested exception is: 
        java.lang.RuntimeException
        at
org.apache.openejb.core.transaction.EjbTransactionUtil.handleSystemException(EjbTransactionUtil.java:154)
        at 
org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:434)
        at 
org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:387)
        at
org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:227)
        ... 11 more
Caused by: java.lang.RuntimeException
        at example.HelloMDB.onMessage(HelloMDB.java:24)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
        at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:126)
        at 
org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:42)
        at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:63)
        at
org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:69)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
        at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:176)
        at
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:95)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
        at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
        at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:138)
        at 
org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:416)
        ... 13 more



--
View this message in context: 
http://openejb.979440.n4.nabble.com/redelivery-of-MDB-with-BMT-tp4666382p4666418.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Reply via email to