Rechercher un changement de comportement dans l'héritage d'exception d'application EJB

A partir de la spécification Java EE 6.0, les exceptions d'application sont héritées par défaut par les classes d'exceptions de sous-classe. Ce comportement est configurable sur l'annotation @ApplicationException ou dans l'élément <application-exception> d'un fichier ejb-jar.xml.

Cette règle marque l'annotation javax.ejb.ApplicationException si celle-ci ne comporte pas d'attribut inherited défini ; elle marque l'élément <application-exception> dans un fichier ejb-jar.xml sans élément inherited défini.


Par exemple, la règle marque l'annotation @ApplicationException suivante :
< span class="Code"> @ApplicationException(rollback = true)
public class ExceptionA extends Exception {
}

public class ExceptionB extends ExceptionA {
}

Cette règle marque également l'élément <application-exception> dans un fichier ejb-jar.xml, comme dans l'exemple suivant :
< span class="Code"> < application-exception>
      < classe_exception>ExceptionA< /classe_exception>
      < annulation > true < /annulation >
</application-exception>


Les exceptions du fichier ejb-jar.xml peuvent être implémentées dans l'application, comme dans l'exemple suivant :
< span class="Code" > la classe publique ExceptionA étend l'exception {
}

public class ExceptionB extends ExceptionA {
}

Dans Java EE 5.0, ExceptionB n'est pas considéré comme ApplicationException, alors que c'est le cas dans Java EE 6.0 car il s'agit d'une extension de la classe ExceptionA. Java EE 6.0 a ajouté l'attribut inherited avec la valeur par défaut true et, par conséquent, toutes les classes héritées sont également considérées comme ApplicationException.

Vous pouvez conserver le comportement Java EE 5.0 de la manière suivante :

Pour plus d'informations, voir les ressources suivantes :