Attraper le SAVON d'erreur de défaillance dans la coutume de l'intercepteur (Soap12FaultOutInterceptor)
J'ai écrit une coutume CXF intercepteur de se connecter à tous les SOAP demande et les réponses dans la base de données et il semble bien fonctionner avec le positif de cas de test et les erreurs de serveur.
Mais quand un SAVON Défaut se produit juste néglige mon interceptor et rien n'est enregistré.
Personnalisé CXF intercepteurs.
public class DbLogOutInterceptor extends AbstractSoapInterceptor {
public void handleMessage(SoapMessage message) {
logger.info("Handling outbound request");
String transaction = MDC.get(mdcKey);
logger.info("OutBound Transaction ID : {} ", transaction);
//code to log the SOAP message in database
.......
}
}
Je ne suis pas le voir le journal des déclarations de cette méthode au lieu de cela, je vois
11:56:34,102 INFO [Soap12FaultOutInterceptor] class org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12FaultOutInterceptor Internalapplication/soap+xml
11:56:34,103 INFO [EligibilityInfo] Outbound Message
---------------------------
ID: 2
Response-Code: 500
Encoding: UTF-8
Content-Type: application/soap+xml
Headers: {}
Payload :
Ce que j'ai à faire pour la capture de l'erreur SOAP des erreurs dans mes personnalisé intercepteurs.
Pouvez-vous me montrer comment vous utilisez CXF, c'est à dire êtes-vous à l'aide de Printemps avec CXF ou tout simplement l'utiliser comme un JAX-WS fournisseur?
CXF avec le printemps et les intercepteurs sont enregistrés à l'aide de CXF de bus
CXF avec le printemps et les intercepteurs sont enregistrés à l'aide de CXF de bus
OriginalL'auteur NullPointerException | 2013-05-13
Vous devez vous connecter pour publier un commentaire.
Donc, à mon personnalisée intercepteur j'écris le code suivant:
Maintenant, c'est dans un code existant était de lever des exceptions de Java et de laisser le cadre de la convertir en une faute. Je ne rentrerai pas dans mes sentiments, mais cela vous aidera à la faute qui est généré.
Maintenant, si vous jetez une erreur à partir de votre méthode de service, ne
J'espère que ce sera vous aider à obtenir la réponse à ce que vous voulez. Assurez-vous d'enregistrer l'intercepteur comme ci-dessous
Autant que je sache
OriginalL'auteur fpmoles
De capture des défauts, vous devez vous inscrire à l'intercepteur comme une faute de l'intercepteur. Par exemple
Voir le CXF de Configuration page sous la rubrique "Activation de la journalisation des messages à l'aide personnalisée CXF bean éléments" pour un exemple d'utilisation de la CXF la journalisation des intercepteurs pour la capture/messages et/sortie défauts.
OriginalL'auteur Patrick
La Meilleure façon est de mettre en œuvre la Faute de l'écouteur et l'utilisation org.slf4j.Enregistreur de journal le message d'erreur au lieu d'utiliser l'enregistrement de java.
Il serait judicieux de remplacer le LoggingInInterceptor et écrire ur custome intercepteur pour obtenir la demande de la charge utile.
L'étape 1: cxf-beans.xml
Étape 2 : votre auditeur qui doit implémente org.apache.cxf.la journalisation.FaultListener
}
Espère que ça aide quelqu'un qui veut juste la trace de la pile et la charge utile lorsqu'une erreur se produit lors de l'appel de service et ainsi éviter d'énormes fichiers de log.
OriginalL'auteur kumarn