2010-03-06 4 views
6

je dois sauter dans le service Web Spring Projet, que j'obligé de mettre en œuvre le client du service Web printemps seulement ..Web Service Spring client Tutorial ou Exemple requis

Alors, j'ai déjà traversé avec Spring's Client Reference Document. Donc, j'ai eu l'idée des classes requises pour l'implémentation du Client. Mais mon problème est que j'ai fait quelques recherches sur googling, mais je n'ai pas eu d'exemple de Client et de Serveur à partir duquel je peux implémenter un échantillon pour mon client. Donc, si quelqu'un me donne un lien ou un tutoriel pour un bon exemple de ce que je peux apprendre, mon implémentation côté client serait grandement appréciée.

Merci à l'avance ...

+0

Un bon exemple pourrait être trouvé à http://stackoverflow.com/questions/18641928/consume-webservice-service-in- spring-ws-using-wsdl –

Répondre

7

dans mon précédent projet, je mis en œuvre un client Webservice avec Spring 2.5.6, maven2, xmlbeans.

  • xmlbeans est responsable de l'ONU/maréchal
  • maven2 est pour le projet Mgmt/construction, etc.

je colle des codes ici et espère qu'ils sont utiles.

xmlbeans plugin maven conf: (en pom.xml)

<build> 
     <finalName>projectname</finalName> 

     <resources> 

     <resource> 

      <directory>src/main/resources</directory> 

      <filtering>true</filtering> 

     </resource> 

     <resource> 

      <directory>target/generated-classes/xmlbeans 

      </directory> 

     </resource> 

    </resources> 


     <!-- xmlbeans maven plugin for the client side --> 

     <plugin> 

      <groupId>org.codehaus.mojo</groupId> 

      <artifactId>xmlbeans-maven-plugin</artifactId> 

      <version>2.3.2</version> 

      <executions> 

       <execution> 

        <goals> 

         <goal>xmlbeans</goal> 

        </goals> 

       </execution> 

      </executions> 

      <inherited>true</inherited> 

      <configuration> 

       <schemaDirectory>src/main/resources/</schemaDirectory> 

      </configuration> 

     </plugin> 
<plugin> 

      <groupId>org.codehaus.mojo</groupId> 

      <artifactId>build-helper-maven-plugin 

      </artifactId> 

      <version>1.1</version> 

      <executions> 

       <execution> 

        <id>add-source</id> 

        <phase>generate-sources</phase> 

        <goals> 

         <goal>add-source</goal> 

        </goals> 

        <configuration> 

         <sources> 

          <source> target/generated-sources/xmlbeans</source> 

         </sources> 

        </configuration> 

       </execution> 



      </executions> 

     </plugin> 
    </plugins> 
</build> 

donc de la conf ci-dessus, vous devez placer le fichier de schéma (soit autonome ou dans votre fichier WSDL, vous devez les extraire et enregistrer en tant que fichier de schéma.) sous src/main/resources. Quand vous construisez le projet avec maven, les pojos vont être générés par xmlbeans. Les codes sources générés seront sous target/generated-sources/xmlbeans.

alors nous arrivons à Spring conf. Je viens de mettre le WS contexte pertinent ici:

<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory"> 

     <property name="payloadCaching" value="true"/> 

    </bean> 


    <bean id="abstractClient" abstract="true"> 
     <constructor-arg ref="messageFactory"/> 
    </bean> 

    <bean id="marshaller" class="org.springframework.oxm.xmlbeans.XmlBeansMarshaller"/> 

<bean id="myWebServiceClient" parent="abstractClient" class="class.path.MyWsClient"> 

     <property name="defaultUri" value="http://your.webservice.url"/> 

     <property name="marshaller" ref="marshaller"/> 

     <property name="unmarshaller" ref="marshaller"/> 

    </bean> 

enfin, un coup d'oeil le ws-client classe java

public class MyWsClient extends WebServiceGatewaySupport { 
//if you need some Dao, Services, just @Autowired here. 

    public MyWsClient(WebServiceMessageFactory messageFactory) { 
     super(messageFactory); 
    } 

    // here is the operation defined in your wsdl 
    public Object someOperation(Object parameter){ 

     //instantiate the xmlbeans generated class, infact, the instance would be the document (marshaled) you are gonna send to the WS 

     SomePojo requestDoc = SomePojo.Factory.newInstance(); // the factory and other methods are prepared by xmlbeans 
     ResponsePojo responseDoc = (ResponsePojo)getWebServiceTemplate().marshalSendAndReceive(requestDoc); // here invoking the WS 


//then you can get the returned object from the responseDoc. 

    } 

}

J'espère que les exemples de codes sont utiles.