2013-03-27 2 views
0

Je publie un service web SOAP en utilisant Spring-WS et je voudrais connaître l'approche pour concevoir un WSDL. Si mon service doit comptabiliser quatre opérations (comme démarrer, mettre à jour, suspendre et redémarrer un service), dois-je avoir un WSDL avec une opération (par exemple, EntertainmentService) et prendre les opérations en tant qu'attribut de requête ou devrait Je définis un WSDL avec plusieurs opérations.Conception de service SOAP Spring-WS - Opérations One vs Multiple

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

Si la suggestion est d'aller avec un WSDL avec plusieurs opérations, comment puis-je préciser la liste des opérations au printemps-WS. Actuellement, mon contexte de servlet de ressort a une DefaultWsdl11Definition et WSDL est généré au moment de l'exécution.

<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> 

Si toutes les quatre opérations utilisent le même WSDL, est beaucoup plus facile pour le client (en utilisant le service Web) pour faire une seule opération (avec différents) que de faire des appels à de multiples opérations. Y a-t-il un avantage à la seconde approche (avec une opération différente pour chaque type de requête)?

Répondre

0

Votre question est plus une conception de conception plutôt qu'une webservice. En général, je dirais qu'il vaut mieux garder chaque opération atomique. Dans votre cas, cela signifierait que vous auriez autant d'opérations que vous avez d'actions à exécuter.

Sur le long terme, vous souhaitez modifier l'action « suspendre » en ajoutant un certain nombre de jours (suspendre xx jours ou suspendre pendant des jours xx)

  1. Vous ne devez modifier la partie liés à l'action suspendre
  2. Vous ne devez tester la suspendre toute action

je wsdl statique lorsque je ressort service web. Si vous changez votre xsd, le ressort saura qu'il y a plusieurs actions/opérations.

+0

Merci pour votre réponse. Quand vous dites "si vous changez votre xsd", vouliez-vous dire avoir un xsd différent pour chaque opération et lier cela pour chaque wsdl? – aprajitha

+0

@aprajitha Je n'ai jamais utilisé la partie wsdl dynamique de spring mais si dans javadoc vous pouvez spécifier un fichier xsd ou une collection de fichiers xsd. Donc, la réponse à votre question est oui. – VirtualTroll

Questions connexes