Веб-сервис Spring: простой способ демонтировать bean-компонент на стороне клиента XML? - PullRequest
2 голосов
/ 30 июня 2010

Я использую spring для выполнения маршалинга / демаршаллинга моих объектов bean (через jaxb2Marshaller / WebServiceTemplate). В целях отладки я бы хотел выложить XML-запрос / ответ. Кто-нибудь знает возможно ли это? Спасибо.

1 Ответ

1 голос
/ 30 июня 2010

Альтернатива A: использовать монитор TCP

Монитор TCP / IP отлично справляется с работой!

Если вы используете Eclipse, представление монитора TCP / IP является очень хорошим решением.

С помощью монитора TCP вы отправляете запрос клиента на монитор, монитор печатает запрос и пересылает его на сервер. Ответ отправляется обратно с сервера на монитор. После печати на дисплее монитора монитор отправляет запрос обратно клиенту.

Альтернатива B: использовать перехватчик

Чтобы выплевывать все сообщения с ошибками, вы должны использовать поддержку валидации Spring WS.

Конфигурация для включения проверки на стороне клиента:

<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>

Вы также можете добавить свой собственный перехватчик, который может делать с полезной нагрузкой все что угодно. Я написал больше о проверке на стороне клиента здесь и на стороне сервера здесь .

...