Je développe une application client-serveur avec JAX-RS/Apache CXF, JSONMapping d'exception personnalisée dans JAX-RS par annotation @WebFault
Je voudrais Apache CXF à gérer mon exception de manière transparente aux deux extrémités: ce qui signifie transformer l'exception en un bean, en la sérialisant avec mon Jackson Serializer (JSON), puis en faisant le tour du côté client.
J'ai vu plusieurs messages confus/réponses à ce sujet et est venu avec l'aide de l'annotation @WebFault:
@WebFault(name=CODE, faultBean="foo.bar.FaultBean")
public class DuplicateRuleNameFault extends Exception {
static final public String CODE = "DUPLICATE_RULE_NAME";
private FaultBean faultBean;
public DuplicateRuleNameFault(String msg) {
super(msg);
this.faultBean = new FaultBean(msg);
}
public DuplicateRuleNameFault() {
}
public FaultBean getFaultBean() {
return faultBean;
}
public void setFaultBean(FaultBean faultBean) {
this.faultBean = faultBean;
}
}
sans succès ... À l'heure actuelle, CXF semble ignorer joyeusement l'annotation sur l'exception et le gérer comme une exception inconnue: erreur d'état 500 et aucun corps de réponse généré côté serveur.
Y a-t-il quelque chose de spécifique que je dois configurer dans l'élément "" serveur de mon contexte Spring? J'ai déjà Spring en train de scanner mes classes Exception/FaultBean (est-ce que c'est même nécessaire BTW?).
J'apprécierais que vous me donniez un exemple de travail. Merci.
pouvez-vous s'il vous plaît partager comment vous avez fait la solution ... je suis face à la même question :( – vashishth
Nous avons passé à « exception fonctionnelle »: Nous avons un mappeur d'exception sur le côté cserver qui construit JSON de coutume sur une exception. Ensuite, du côté client, j'utilise un inInterceptor pour JRS unmarshal et lancer une exception en réponse à une erreur. –