J'utilise spring pour faire tout le marshalling/unmarshalling de mes objets bean (via jaxb2Marshaller/WebServiceTemplate). À des fins de débogage, j'aimerais pouvoir cracher le XML de demande/réponse. Est-ce que quelqu'un sait si c'est possible? Merci.Service Web Spring: moyen facile de désassocier un bean à un client XML?
Répondre
Alternative A: Utiliser un moniteur TCP
Un moniteur TCP/IP fait le travail très bien!
Si vous utilisez Eclipse, la vue du moniteur TCP/IP est une très bonne solution.
Avec un moniteur TCP, vous envoyez la demande du client au Montior, le moniteur imprime la demande et la transmet au serveur. La réponse est renvoyée du serveur au moniteur. Après l'impression sur l'écran du moniteur, le moniteur renvoie la demande au client.
B Alternative: Utiliser un intercepteur
cracher tous les messages d'erreurs, vous devez utiliser le support de validation de Spring WS.
Config pour permettre la validation du côté client:
<bean id="webServiceTemplate" class=
"org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="marshaller" />
<property name="defaultUri"
value="http://localhost:8081/ws-demo/account-balance-service" />
<property name="interceptors">
<list>
<ref bean="payloadValidatingInterceptor" />
</list>
</property>
</bean>
<bean id="payloadValidatingInterceptor"
class="org.springframework.ws.client.support
.interceptor.PayloadValidatingInterceptor">
<property name="schema"
value="file:WebContent/WEB-INF/schemas/account-balance-service.xsd" />
<property name="validateRequest" value="true" />
<property name="validateResponse" value="true" />
</bean>
Vous pouvez également ajouter votre propre intercepteur qui peut faire tout ce que vous voulez avec la charge utile. J'ai écrit plus sur la validation côté client here et côté serveur here.
Je ne vois pas la différence entre cela et http://stackoverflow.com/questions/2812839/spring-ws-webservicestemplate-jaxb2marshaller-client-view-raw-xml – skaffman