Spring-ws: несколько конечных точек / wsdl / xsd / you-name-it - PullRequest
2 голосов
/ 13 октября 2011

Информация: я использую Spring-w 1.5.9 и Spring 2.5.6

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

Сейчас у меня есть один веб-сервис. Он (конечно) содержит один wsdl и одну конечную точку и т. Д.

В настоящее время я расширяю веб-сервис, и там я создал еще один xsd, код автоматического генерирования с использованием JAXB2 (xjc) и т. Д.

Теперь, как мне обращаться с этими xsds, wsdl (s), кодом и так далее? Я не вижу, что рекомендует Spring-ws ...

Мой архитектор хотел бы иметь один wsdl, который может быть достигнут с помощью следующего:

<bean id="schemaCollection" class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
<property name="xsds">
    <list>
        <value>one.xsd</value>
        <value>two.xsd</value>
    </list>
</property>
<property name="inline" value="true"/>

Это хороший способ сделать это? Я собираюсь в конечном итоге с 10-15 веб-сервисов, таким образом, большой WSDL.

Как насчет конечных точек? Должен ли я создать единую конечную точку и проверить тип запроса (например, используя instanceof)? Я сам считаю, что сопоставление одной конечной точки одному запросу более элегантно / чисто.

Наконец, как насчет сортировки? У меня есть это (с одной WS / схема):

    <oxm:jaxb2-marshaller id="marshaller" contextPath="mydomain.signals.one.v1_0.schemas"/>
<oxm:jaxb2-marshaller id="unmarshaller" contextPath="mydomain.signals.v1_0.schemas"/>

Но как мне добавить еще одну схему к этому ?? Я пытаюсь что-то вроде следующего, который сейчас не работает для меня:

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPaths">
        <list>
            <value>mydomain.signals.one.v1_0.schemas</value>
            <value>mydomain.signals.two.v1_0.schemas</value>
        </list>
    </property>
</bean>

Надеюсь, это имеет смысл. Я стремлюсь к указателям и подсказкам относительно того, что мне следует делать.

1 Ответ

1 голос
/ 13 октября 2011

Если у вас есть 10-15 веб-сервисов, вы не сможете обойтись без огромного wsdl.Если целью является один wsdl, то, что вы делаете, кажется приемлемым.

Я бы предпочел конечные точки для каждого запроса.

Кроме того, вы пытались использовать список значений, разделенных двоеточиями, для своего контекстного пути?Итак, не используйте список, просто одну длинную строку с каждым путем контекста, разделенным двоеточиями.

Из документации Spring-WS:

Контекстный путь - это список имен пакетов Java, разделенных двоеточиями (:), которые содержат производные от схемы классы.

Я знаю, что отрывок для Jaxb1, но я почти уверен, что он все еще применим к Jaxb2Marshaller.Я думаю, вы бы использовали вариант списка, если бы вы указывали классы.

http://static.springsource.org/spring-ws/site/reference/html/oxm.html

...