我正在使用Spring-WS发布SOAP Web服务,并且想知道设计WSDL的方法。
如果我的服务必须考虑四个操作(如启动,更新,挂起和重新启动服务),我应该有一个带有一个操作的WSDL(例如,EntertainmentService)并将操作作为请求属性,或者我应该定义一个具有多个操作的WSDL。
<request>
<type><!-- start | update | suspend | restart --></type>
<name></name>
<address></address>
<services>
<tv></tv>
<internet></internet>
<phone></phone>
</services>
如果建议使用一个具有多个操作的WSDL,我如何在Spring-WS中指定操作列表。目前,我的spring servlet上下文有一个DefaultWsdl11Definition,WSDL是在运行时生成的。
<bean id="EntertainmentService" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true">
<property name="schema">
<bean class="org.springframework.xml.xsd.SimpleXsdSchema">
<property name="xsd" value="/WEB-INF/schemas/entertainmentService.xsd"/>
</bean>
</property>
<property name="portTypeName" value="EntertainmentService"/>
<property name="locationUri" value="/endpoints"/>
</bean>
如果所有四个操作都使用相同的WSDL,那么客户端(使用Web服务)进行一个操作(使用不同的操作)比调用多个操作要容易得多。第二种方法是否有任何优势(每种请求类型都有不同的操作)。
答案 0 :(得分:0)
您的问题更多的是概念设计,而不是网络服务。一般来说,我认为最好保持每个操作都是原子的。在您的情况下,这意味着您将拥有与要执行的操作一样多的操作。
从长远来看,假设您想通过添加一天的数量来修改“暂停”操作(暂停xx天或暂停xx天)
当我使用spring web-service时,我使用了静态wsdl。如果你改变你的xsd,spring会知道有几个动作/操作。