Prüfen, ob sich das Verhalten bei der Übernahme von EJB-Anwendungsausnahmen geändert hat

Beginnend mit der Spezifikation Java EE 6.0 werden Anwendungsausnahmen standardmäßig von Ausnahmeklassen einer Unterklasse übernommen. Dieses Verhalten ist in der Annotation @ApplicationException oder im Element <application-exception> einer Datei ejb-jar.xml konfigurierbar.

Diese Regel markiert die Annotation javax.ejb.ApplicationException, wenn kein Attribut inherited für sie definiert ist. Außerdem markiert die Regel das Element <application-exception> in einer Datei ejb-jar.xml, für die kein Element inherited definiert ist.


Die Regel markiert beispielsweise die folgende Annotation @ApplicationException:
< span class="Code"> @ApplicationException(rollback = true)
public class ExceptionA extends Exception {
}

public class ExceptionB extends ExceptionA {
}

Die Regel markiert im folgenden Beispiel auch das Element <application-exception> in einer Datei ejb-jar.xml:
< span class="Code"> < application-exception>
      < Ausnahmeklasse>ExceptionA< /Ausnahmeklasse>
      < Rollback> true < /rollback>
</application-exception>


Die Ausnahmen in der Datei ejb-jar.xml können wie im folgenden Beispiel gezeigt in der Anwendung implementiert werden:
< span class="Code" > public class ExceptionA extends Exception {
}

public class ExceptionB extends ExceptionA {
}

In Java EE 5.0 wird ExceptionB nicht als ApplicationException eingestuft, aber in Java EE 6.0 ist ExceptionB eine ApplicationException, weil sie eine Erweiterung der Klasse "ExceptionA" ist. In Java EE 6.0 wurde das Attribut inherited mit dem Standardwert true hinzugefügt, sodass alle übernommenen Klassen ebenfalls ApplicationExceptions sind.

Sie können das Verhalten von Java EE 5.0 wie folgt beibehalten:

Weitere Informationen finden Sie in den folgenden Quellen: