Spring-ws:多个端点/ wsdl / xsd / you-name-it

时间:2011-10-13 06:48:33

标签: xsd wsdl spring-ws endpoint

信息:我正在使用Spring-ws 1.5.9和Spring 2.5.6

我目前正在构建大量的Web服务,并对架构应该如何提出一些问题。

现在我有一个网络服务。它(当然)包含单个wsdl和单个端点等等。

我正在扩展Web服务,在那里我使用JAXB2(xjc)创建了另一个xsd,自动代码等等。

现在,我该如何处理这些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个Web服务这样的大型wsdl。

端点怎么样?我应该创建一个端点并测试请求类型(例如使用instanceof)吗?我自己认为将一个端点映射到一个请求更加优雅/干净。

最后,编组怎么样?我有这个(有一个ws / schema):

    <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 个答案:

答案 0 :(得分:1)

如果你有10-15个网络服务,就没有办法没有庞大的wsdl。如果目标是单个wsdl,那么你所做的似乎是可以接受的。

我更喜欢每个请求的端点。

另外,您是否尝试过为上下文路径使用冒号分隔的值列表?所以,不要使用列表,只需要一个长字符串,每个上下文路径用冒号分隔。

来自Spring-WS文档:

  

上下文路径是冒号(:)分隔的Java包名称列表   包含架构派生类。

我知道这篇文章适用于Jaxb1,但我很确定它仍适用于Jaxb2Marshaller。我认为如果你指定类,你只会使用列表变体。

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