Comment puis-je me connecter à la requête et à la réponse Log4J SOAP dans AXIS 1.x?
Je rencontre le problème suivant:
Je veux ouvrir une session le SAVON de requêtes/réponses qui atterrissent sur mon web service (côté serveur). Essayer de configurer mon service web dans le fichier wsdd. Je suis toujours à l'atterrissage sur des pages comme la suivante:
Comment utiliser le org.apache.de l'axe.les gestionnaires.LogHandler
Qui recommande de configurer l'Apeche Axe LogHandler de journal de la demande/réponse. Ce n'est pas valable pour moi, car d'une part il n'y a aucun moyen de lier le log4j là, et b)j'ai juste ne suis pas capable de le faire fonctionner.
Que quelqu'un connait un moyen de faire mon log4j pour journaliser les requêtes/réponses?
source d'informationauteur raspayu
Vous devez vous connecter pour publier un commentaire.
Donc après des heures ou Google dans le web, j'ai décidé d'obtenir aventureux et programmer mon propre gestionnaire. Est beaucoup plus facile que prévu.
J'ai fait une classe qui étend la classe abstraite BasicHandler (org.apache.de l'axe.les gestionnaires.BasicHandler), et met en œuvre la méthode invoke loging la demande ou de la réponse. Voici ma classe, que j'ai baptisé comme SOAPLogHandler :
L'idée est, pour vous connecter d'abord la demande, et lors du traitement, les journaux de la réponse. Ainsi, dans le server-config.wsdd (ou le wsdd fichier à partir de votre client si vous êtes dans le côté client), nous devons ajouter un gestionnaire pointant vers cette classe, et les configurer pour qu'il utilise dans la requête/réponse de la chaîne:
1er ajoutez le gestionnaire
2ème ajouter l'utilisation de ce gestionnaire de la requête/réponse http transport (focus sur le journal de gestionnaire)
Avec ça, la magie doit être fait, et vous devriez recevoir un joli journal de la demande/réponses!
Avertissement: je ne suis pas vraiment sûr de ce qui va se passer si vous utilisez une sorte de SAVON multipart chose.
Enregistrez ce fichier en tant que "client-config.wsdd" dans le répertoire de travail comme vous le faites pour log4j.les propriétés .
Si vous ne voulez pas modifier tout le code et le débogage de votre axe client de service web, vous pouvez suivre cette méthode pour ouvrir une session tous les entrants et sortants des messages soap.
Vous avez besoin d'ajouter un Axe enregistreur à votre
log4.xml
fichier de configuration, comme ci-dessous:someLogAppender
peut être un Log4J appender, ou vous pouvez définir un serveur dédié, comme ci-dessous:Je sais que je suis un vieux thread, mais peut être utile pour les personnes à la recherche de réponses.
Pour AXE-1 Serveur de journalisation côté, mettre à jour votre
server-config.wsdd
comme ci-dessous.server-config.wsdd
est sousWEB-INF
dossier de votre fichier war.Un nouveau gestionnaire pour le journal. Le nom de fichier avec chemin d'accès est configurable.
Vous pouvez également utiliser le
LogHandler.writeToConsole
paramètre avec la valeur"true"
pour ouvrir une session dans votre journal de la console.Puis mettre à jour le
<globalConfiguration>
article, avoirSi le
requestFlow
etresponseFlow
contient d'autres gestionnaires ,mettre les journaux que le premier gestionnaire.Ce devrait être uniquement utilisées à des fins de débogage but n'est pas de la production. Depuis l'enregistrement est naïf et ne la normale de l'opération d'écriture sur le fichier sans tampon. Deuxièmement, le fichier journal grandir en GB car il n'existe pas de mécanisme de roulement.
Pour l'AXE 1 la journalisation Côté Client, mise à jour de votre
client-config.wsdd
comme ci-dessous. Leclient-config.wsdd
devrait aller dans votreclasspath
directement sous un dossier à la racine configuré dans leclasspath
pas dans tous les sous-dossiers. Le meilleur emplacement est le même répertoire où se trouve votrelog4j.xml
oulog4j.properties
fichier est présent(Merci à #MukeshKoshyM post ci-dessus).Le même problème mentionné pour le côté serveur de journalisation est applicable pour le côté client.
Pour la production, écrire votre propre journal de gestionnaire en étendant
org.apache.axis.handlers.BasicHandler
et de configurer le fichier de classe dans le gestionnaire. S'il vous plaît regardez la réponse ci-dessus à partir de #raspayu pour configurer votre propre. Pour vous connecter les défauts de remplacer lepublic void onFault(MessageContext msgContext)
méthode de votre Gestionnaire.Une solution pour connecter l'Axe Défauts est d'étendre le OnFault méthode :
Il est également obligatoire de définir le gestionnaire dans la configuration globale de la demande de débit, dans le fichier wsdd sera quelque chose comme ceci :
Axe par défaut est la vérification de fichier client-config.wsdd. Nous avons besoin de garder ce fichier à l'emplacement même que log4j.xml ou log4j.les propriétés. Fichier journal est généré à l'emplacement spécifié sur le journal handeller. Vérifiez que le dossier de la structure existe.
mukesh