проверка wsdl / схемы с использованием cxf - PullRequest
1 голос
/ 05 апреля 2010

Мне трудно получить cxf для проверки xml-запроса, который мой сервис создает для третьей стороны.

Мой проект использует Maven. Вот моя структура проекта

Основной модуль:

+ Sub-Module1 = Приложение

+ sub-Module2 = Интерфейсы

В Интерфейсах внутри src / main / resources у меня есть свои wsdl и xsd. Итак, src / main / resources + mywsdl.wsdl. + myschema.xsd

Подмодуль интерфейса указан как зависимость в подмодуле приложения. внутри подмодуля приложения есть файл cxsf в src / maim / resources.

<jaxws:client name="{myTargerNameSpaceName}port"
    createdFromAPI="true">
    <jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
    </jaxws:properties>
</jaxws:client>

И:.

    <jaxws:endpoint name="{myTargetNameSpaceName}port"
    wsdlLocation="/mywsdl.wsdl"
    createdFromAPI="true">
    <jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
    </jaxws:properties>
</jaxws:endpoint>

Я попытался изменить порт "name =" {myTargetNameSpaceName} "на" name = "{myEndPointName} port"

Но без наковальни.

Мое приложение работает. Но он просто не проверяет созданный мной xml, который должен использоваться сторонним приложением. Я хотел бы, чтобы проверка работала, чтобы любой отправленный мною запрос был действительным.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 14 января 2013

Просто добавьте аннотацию @org.apache.cxf.annotations.SchemaValidation в свой класс реализации службы, и проверка схемы будет работать.

1 голос
/ 05 апреля 2010

Сначала убедитесь, что значение атрибута имени равно {NAMESPACE} PORT_NAME, где NAMESPACE - это ваш URI пространства имен, а PORT_NAME - имя вашего порта WSDL. Не видя ваш WSDL, я не знаю, назвали ли вы свой порт WSDL "порт" или вы просто приводите очищенный пример.

Например, мое пространство имен WSDL - "http://example.com/services", а имя моего элемента порта WSDL -" myPort ", конфигурация Spring будет выглядеть следующим образом

<jaxws:endpoint name="{http://example.com/services}myPort" >
  ...

См. Описание атрибута "CreatedFromAPI" в CXF документах

Если это не решит вашу проблему, попробуйте посмотреть пример кода wsdl_first , обновить версию CXF и / или опубликовать свой вопрос с тестовым кодом, демонстрирующим вашу проблему для пользователя CXF список .

0 голосов
/ 13 января 2011

У нас были похожие проблемы. CXF 2.3.1 исправил проблему для нас во входящих сообщениях, но не в исходящих.

https://issues.apache.org/jira/browse/CXF-3233

Мы работаем над этим, собирая сообщения и проверяя их на сервере перед их отправкой по цепочке перехватчиков CXF. Мы проверяем, используя org.springframework.xml.validation.XmlValidator.

Я надеюсь, что будущая версия CXF решит эту проблему, но это то, что мы делаем сейчас.

...