]
Jan Martiska commented on WFLY-4386:
------------------------------------
Well, I agree that it's confusing. But I suspect there are reasons for it to be that
way. For example, if a module contains EJB beans and your application depends on that
module, but you want to choose whether the application should deploy those EJBs (including
JNDI entries etc.) as if they were part of the application. Because that's what it
will do if the app imports annotations from the module.
EJB annotations ignored if classes are packaged as JBOSS modules
----------------------------------------------------------------
Key: WFLY-4386
URL:
https://issues.jboss.org/browse/WFLY-4386
Project: WildFly
Issue Type: Bug
Components: Class Loading, EJB
Affects Versions: JBoss AS7 7.1.1.Final
Reporter: Tihomir Meščić
Assignee: David Lloyd
I have an EJB that writes something to the DB and I have a custom checked exception that
is marked as @javax.ejb.ApplicationException(rollback=true), which means that when the
exception is thrown, transaction should be rollbacked.
{code:title=Test.java.java|borderStyle=solid}
@ApplicationException(rollback=true)
public class MyException extends Exception {
{code}
This exception is packaged in a separate JAR.
When this JAR is included in the lib/ folder of the EAR with my EJB, everything works as
expected (when the EJB throws MyException, the transaction is rollbacked).
However, when this JAR is deployed as a JBOSS module (so, in jboss_folder/modules/...
folder), and the EAR declares a dependency on this module (MANIFEST.MF -> Dependencies:
....) , then the transaction is NOT rollbacked. So the EJB container ignores the
annotation.
One workaround (that I don't really like) is to specify that this is an application
exception in the jboss-ejb3.xml (then, the transaction will be rollbacked).