Преобразование импорта XSD для WSDL в Spring WS - PullRequest
2 голосов
/ 28 марта 2011

Я попытаюсь расширить пример в главе 5 руководства Spring WS.Я использую Spring WS 1.5.9.

Я добавил ...

<import namespace="http://myco.com/schemas/promotion/v1_2"
    schemaLocation="http://localhost:8080/ordersService/Promotion_1_2.xsd" /> ...

Но Spring, похоже, не изменяет местоположение импорта, как это делается дляпорт.Таким образом, на веб-сайте моей компании по-прежнему отображается «localhost: 8080»

У меня определено поколение WSDL

<bean id="orders" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
    <property name="schema" ref="schema" />
    <property name="portTypeName" value="Orders" />
    <property name="locationUri" value="http://localhost:8080/ordersService/" />

Преобразует ли Spring Framework импорткаким-то образом ???

ОБНОВЛЕНИЕ: Еще немного фона ....

Мы используем тот же XSD с плагином maven JaxB2 для построения объектов нашей схемы ответа.Все это прекрасно работает, и мы используем распознаватель каталогов для фактического поиска дополнительных XSD бизнес-доменов во включенном файле JAR.У нас есть сотни XSD, которые описывают нашу бизнес-область.

Так что я стараюсь не нарушать это.

То, что я хотел бы увидеть, является более подробным примером.Пример использования JaxB2 и функциональности XSD -> WSDL.

Должен ли я провести рефакторинг XSD?Должен ли я использовать WSDL, а не XSD. Как правильно идентифицировать XSD для запуска?Я использую "classpath: My_file.xsd"?Должен ли я перечислить, возможно, сотню XSD-файлов в schemaCollection?

Пружинные документы великолепны, но я хотел бы получить практический пример, который соответствует.

Ответы [ 2 ]

3 голосов
/ 12 мая 2012

Я хочу добавить подробности о решении, с которым мы пришли.Мы переехали в Spring WS 2x.Вот обновленная ссылка ...

http://static.springsource.org/spring-ws/site/reference/html/server.html#server-automatic-wsdl-exposure

Трюк / ключ был в этом разделе, он говорит ... "Если вы хотите использовать несколько схем, либо путем включения или импорта,вы захотите поместить Commons XMLSchema "

, чтобы это был окончательный ответ, чтобы добавить это в наш проект.

<dependency>
     <groupId>org.apache.ws.commons.schema</groupId>
     <artifactId>XmlSchema</artifactId>
     <version>1.4.7</version>
</dependency>

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

2 голосов
/ 28 марта 2011

Spring-WS может автоматически встроить все элементы схемы непосредственно в WSDL, чтобы они отображались как один документ.Это позволяет избежать проблемы недоступных <import> URL.

См. раздел руководства Spring WS, в котором говорится о CommonsXsdSchemaCollection.

...