2013-03-27 69 views
0

我发布了一个使用Spring-WS的SOAP webservice,并且想知道设计WSDL的方法。Spring-WS SOAP服务设计 - 一对多操作

如果我的服务必须解释四个操作(例如启动,更新,挂起和重新启动服务),我是否应该有一个具有一个操作的WSDL(例如EntertainmentService)并将操作作为请求属性或应该我定义了一个具有多个操作的WSDL。

<request> 
    <type><!-- start | update | suspend | restart --></type> 
    <name></name> 
    <address></address> 
    <services> 
     <tv></tv> 
     <internet></internet> 
     <phone></phone> 
    </services> 

如果建议是去与一个WSDL具有多个操作,如何指定作业的春天-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

你的问题更多的是一个概念设计,而不是一个web服务。总的来说,我认为最好保持每个操作的原子性。就你而言,这意味着你将拥有尽可能多的操作,因为你需要执行的操作。

从长远来看,假设你想加入了许多天的修改“暂停”动作(暂停xx天或暂停XX天)

  1. 你只需要修改的部分有关行动暂停
  2. 您只需测试暂停行动

我用一个静态的WSDL,当我用弹簧web服务。如果你改变你的xsd,spring会知道有几个动作/操作。

+0

感谢您的回复。当你说“如果你改变你的xsd”,你的意思是每个操作都有不同的xsd,并且为每个wsdl配置? – aprajitha 2013-03-28 21:41:36

+0

@aprajitha我从来没有使用spring的动态wsdl部分,但是如果在javadoc中可以指定一个xsd文件或一组xsd文件。所以你的问题的答案是肯定的。 – VirtualTroll 2013-03-31 22:49:10