Проверка схемы Apache CFX - сначала контракт

Я занимаюсь разработкой веб-сервиса с использованием Apache CXF и сначала использую контракт с проверкой схемы. Проблема в том, что проверка не работает. Там нет ошибки, поэтому он как бы не активирован. Но проверка настроена.

Итак, я взглянул на официальные примеры Apache CXF, которые вы можете найти здесь.

Я посмотрел пример wsdl_first и изменил его, добавив проверку схемы и некоторые ограничения в WSDL:

<!-- HTTP Endpoint -->
<jaxws:endpoint xmlns:customer="http://customerservice.example.com/"
    id="CustomerServiceHTTP" address="http://localhost:9090/CustomerServicePort"
    serviceName="customer:CustomerServiceService" endpointName="customer:CustomerServiceEndpoint"
    implementor="com.example.customerservice.server.CustomerServiceImpl">

    <jaxws:features>
        <bean class="org.apache.cxf.feature.LoggingFeature" />
    </jaxws:features>
            <!-- schema validation-->
    <jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
    </jaxws:properties>
</jaxws:endpoint>

К моему удивлению, это тоже не работает.

Итак, я взглянул на пример wsdl_first_xmlbeans, где в соответствии с файлом README.txt также показано, как можно использовать конфигурацию CXF для включения проверки схемы.

И для этого примера проверка схемы работает. Разница между обоими примерами заключается в том, что во втором используются API-интерфейсы JAX-WS и подход XMLBeans. Это как-то связано? Почему проверка схемы не работает для первого примера? Возможно, я что-то упустил.

1 ответ

Решение

Для проверки на стороне службы, вероятно, потребуется установить атрибут wsdlLocation в конечной точке jaxws:, чтобы он загружал WSDL (который затем содержал бы схемы). В настоящее время проверка в этом примере выполняется только на стороне клиента. Если вы запускаете сервис, журнал показывает:

INFO: Creating Service {http://server.customerservice.example.com/}CustomerServiceImplService from class com.example.customerservice.CustomerService

который показывает, что он вообще не использует WSDL.

Другие вопросы по тегам