An annotated TransactionAttributeType is not applied to a inherited EJB-Method
Issue
There seems to be a bug impacting the EJB configuration via annotations.
Two different SessionEJBs BeanA and BeanB with the following annotations defined at class level
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
BeanB inherits methods from its superclass but does not override any of them
Code Snippet
------------------
BeanA.java
------------------
@Stateless(name="BeanA")
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class BeanA implements BeanARemoteInterface {
@Override
public void testMethod() throws Exception {
.. .. ..
}
-------------------
BeanB.java
-------------------
@Stateless(name="BeanB")
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class BeanB extends SimpleBaseClass implements BeanBLocalInterface {
//All functionality is defined in SimpleBaseClass!
}
-------------------
public class SimpleBaseClass {
public void testMethod() throws Exception {
.. .. ..
}
- A remote call invokes
BeanA#testMethod()and and subsequentlyBeanA#testMethod()invokesBeanB#testMethod()(which is inherited from the superclass SimpleBaseClass)
Although BeanB requires a new transaction, the BeanB#testMethod() is executed within the same transaction.
This buggy behaviour occurs only if the TransactionAttributeType is set via annotation. If the trans-attribute is set via ejb-jar.xml, then both EJBs are operating as expected in two different transactions.
Environment
- Red Hat JBoss Enterprise Application Platform (EAP) 6.4.x
- EJB 3.1
- EJB BeanB inherits methods from a superclass
SimpleBaseClass - There are no annotations in the superclass of the BeanB
SimpleBaseClass - BeanB does not override any of the inherited methods from superclass
SimpleBaseClass - BeanB has the following annotations defined at class level
@TransactionManagement(TransactionManagementType.CONTAINER)@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
