I have a small problem with Redelivering messages.
I am using jboss 4.0.5.
I have looked at bug EJBTHREE-783 and backported the changes from 4.2.1ga to the 4.0.5
branch.
However, when looking at the code, I came across the following part, in
org.jboss.ejb.plugins.inflow.JBossMessageEndpointFactory:
|
| public boolean isDeliveryTransacted(Method method) throws NoSuchMethodException
| {
| boolean result = false;
| int transType = metaData.getMethodTransactionType(method.getName(),
method.getParameterTypes(), InvocationType.LOCAL);
| if (transType == MetaData.TX_REQUIRED)
| result = true;
| if (trace)
| log.trace("isDeliveryTransacted " +
container.getBeanMetaData().getContainerObjectNameJndiName() + " method=" +
method + " result=" + result);
| return result;
| }
|
|
I am a bit surprised by this method. What about TX_MANDATORY, TX_REQUIRES_NEW, and
TX_SUPPORT?
I guess that the delivery is transacted if we are using any of these states.
Currently messages do not get rollback and requeued if the transaction type is other than
REQUIRED. I don't think that's correct. They should be requeued as well for other
transaction types.
What there a logic behind this? I may I reopen EJBTHREE-783?
Thanks,
Nicolas Leroux
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4083882#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...