Так же, как проверка XML-файла по определению XML-схемы в Java, есть ли способ проверки XML-файла, который содержит конверт SOAP, по WSDL-файлу?
Некоторые контейнеры веб-служб предоставляют эту функцию.JBoss 3.0.1+ делает это с аннотацией @SchemaValidation:
http://community.jboss.org/wiki/JBossWS-NativeUserGuide#SchemaValidation
Если вы используете Spring-WS, это можно сделать с помощью перехватчика по следующим направлениям:
<sws:interceptors> <sws:payloadRoot namespaceUri="..."> <bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> <property name="schema" value="classpath:/wsdl/schema.xsd" /> <property name="validateRequest" value="true" /> <property name="validateResponse" value="true" /> </bean> </sws:payloadRoot> </sws:interceptors>
С CXF, вот подход:
http://cxf.apache.org/faq.html#FAQ-HowcanIturnonschemavalidationforjaxwsendpoint%3F
Существует инструмент, разработанный Иваном Кривяковым, который проверяет необходимые или соответствующие XML-файлы на основе WSDL и / или XSD.Инструмент доступен по номеру http://www.codeproject.com/Articles/182406/Validating-SOAP-Message-against-WSDL (хотя вам необходимо создать логин.)
Я не знаю простой способ.В нашем проекте мы просто копируем и вставляем элемент из WSDL в файл XSD.Вы можете написать класс утилит, который сделает эту работу вместо вас.