0

我正在使用 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 服务)进行一项操作(使用不同的 )是否比调用多个操作更容易。第二种方法有什么优势(每种请求类型都有不同的操作)。

4

1 回答 1

0

您的问题更多是概念设计而不是网络服务。一般来说,我会说最好让每个操作保持原子性。在您的情况下,这意味着您将拥有与要执行的操作一样多的操作。

从长远来看,假设您想通过添加天数来修改“暂停”操作(暂停 xx 天或暂停 xx 天)

  1. 您只需修改与操作挂起相关的部分
  2. 您只需要测试挂起操作

我在使用 spring web-service 时使用了静态 wsdl。如果你改变你的 xsd,spring 会知道有几个动作/操作。

于 2013-03-28T18:04:50.430 回答