信息:我正在使用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>
我希望这是有道理的。我的目标是关于我应该做什么的指示和提示。
答案 0 :(得分:1)
如果你有10-15个网络服务,就没有办法没有庞大的wsdl。如果目标是单个wsdl,那么你所做的似乎是可以接受的。
我更喜欢每个请求的端点。
另外,您是否尝试过为上下文路径使用冒号分隔的值列表?所以,不要使用列表,只需要一个长字符串,每个上下文路径用冒号分隔。
来自Spring-WS文档:
上下文路径是冒号(:)分隔的Java包名称列表 包含架构派生类。
我知道这篇文章适用于Jaxb1,但我很确定它仍适用于Jaxb2Marshaller。我认为如果你指定类,你只会使用列表变体。
http://static.springsource.org/spring-ws/site/reference/html/oxm.html