Question

Je suis confus par un point vague dans la définition et par l'impact possible de Application Exceptions et System Exceptions dans EJB.En particulier, je n'arrive pas à comprendre si l'exception est définie comme :

public class SomeException extends Exception{
...
}

va être un Application ou System Exception.Selon les spécifications, un Application Exception doit toujours être défini avec l'annotation @ApplicationException.J'en déduis que la classe ci-dessus n'est pas une Application Exception même s'il s'agit d'une exception vérifiée.Mes questions portent sur la syntaxe Java correcte et par la suite sur le comportement du EJB Container au cas où ceci Exception doit être intégré dans une méthode commerciale d'un Session Bean (pas Singleton cependant):

@Stateless
@LocalBean
public class StatelessBean{

public void doStuff(){
throw new SomeException(); 
}

}

1) Si le SomeException être déclaré dans la clause throw ?

2) Est-ce que le Container supprime l'instance après la méthode doStuff() est appelé?

3) Si c'est finalement un Sytem Exception mon hypothèse est-elle correcte, à savoir qu'un System Exception pourrait être un chèque et non RuntimeException?

Mise à jour:

À mon avis, selon la spécification, il n'est pas clairement clair qu'une exception vérifiée doit toujours être une exception vérifiée. Application Exception.Et si l'on définissait un coché RuntimeException?Doit-il être inclus dans throw d'une méthode ?Est-ce un System ou Application Exception?

 public class SomeException extends RuntimeException{
    ...
    }
Était-ce utile?

La solution

La spécification dit :

Les exceptions d'application qui sont des exceptions vérifiées peuvent être définies comme telles en étant répertoriées dans les clauses throws des méthodes de l'interface métier du bean, de la vue sans interface, de l'interface d'accueil, de l'interface des composants et du point de terminaison du service Web.Une exception d’application qui est une exception non contrôlée est définie comme une exception d’application en l’annotant avec l’annotation de métadonnées ApplicationException, ou en la désignant dans le descripteur de déploiement avec l’élément application-exception.

Ainsi, la classe ci-dessus est une exception d'application, puisqu'il s'agit d'une exception vérifiée.Et bien sûr, cela doit être répertorié dans la clause throws de votre méthode, sinon le code ne sera pas compilé.Et non, l'instance du bean ne sera pas supprimée une fois cette exception levée, conformément à la spécification.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top