FAQ SpringConsultez toutes les FAQ
Nombre d'auteurs : 5, nombre de questions : 41, dernière mise à jour : 24 avril 2008 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.
Burlap est un protocole basé sur XML et sur http pour exporter un service. Il est normalement indépendant du langage, mais actuellement principalement utilisé pour des applications Java à Java.
Afin d'exporter un service avec Burlap, il est nécessaire que celui-ci soit composé d'une interface et d'une implémentation.
Dès lors il est très simple d'exporter un service :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- Configuration du service en lui-même --> <bean id="monService" class="com.developpez.spring.remoting.MonServiceImpl"> <!-- Définition des propriétés --> </bean> <bean name="/MonServiceBurlap" class="org.springframework.remoting.caucho.BurlapServiceExporter"> <!-- Spécification de l'implémentation du service --> <property name="service"> <ref bean="monService"/> </property> <!-- Spécification de l'interface du service à exporter --> <property name="serviceInterface"> <value>com.developpez.spring.remoting.MonService</value> </property> </bean> |
Par exemple, pour une Servlet de nom remoting, c'est dans un fichier WEB-INF/remoting-servlet.xml. Le fichier web.xml correspondant pourrait être :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | <servlet> <servlet-name>remoting</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping> |
Au niveau du client, il existe un mécanisme similaire pour se connecter au service :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | <bean id="monServiceProxy" class="org.springframework.remoting.caucho.BurlapProxyFactoryBean"> <!-- Configuration de l'url d'accès --> <property name="serviceUrl"> <value>http://localhost:8080/MonApplication/remoting/MonServiceBurlap</value> </property> <!-- Configuration de l'interface du service que le proxy doit implémenté --> <property name="serviceInterface"> <value>com.developpez.spring.remoting.MonService</value> </property> </bean> |
Contrairement à Burlaps ou Hessian qui utilisent des sérialisations binaires et XML indépendantes à Java, HttpInvoker utilise la sérialisation Java standard.
Cela implique que HttpInvoker ne fonctionne bien évidemment qu'entre deux applications Java, mais aussi que tous les objets qui sont transférés suivent les règles de sérialisation Java : Implémenter l'interface java.io.Serializable ainsi que de définir un serialVersionUID correctement.
De plus, HttpInvoker n'est disponible qu'avec Spring, il est donc nécessaire que le client et le serveur soient tous les deux basés sur Spring.
Afin d'exporter un service, la classe HttpInvokerServiceExporter sera utilisée :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- Configuration du service en lui-même --> <bean id="monService" class="com.developpez.spring.remoting.MonServiceImpl"> <!-- Définition des propriétés --> </bean> <bean name="/MonServiceHttpInvoker" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <!-- Spécification de l'implémentation du service --> <property name="service"> <ref bean="monService"/> </property> <!-- Spécification de l'interface du service à exporter --> <property name="serviceInterface"> <value>com.developpez.spring.remoting.MonService</value> </property> </bean> |
Par exemple, pour une Servlet de nom remoting, c'est dans un fichier WEB-INF/remoting-servlet.xml. Le fichier web.xml correspondant pourrait être :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | <servlet> <servlet-name>remoting</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping> |
Au niveau du client, il existe un mécanisme similaire pour se connecter au service :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | <bean id="monServiceProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <!-- Configuration de l'URL d'accès --> <property name="serviceUrl"> <value>http://localhost:8080/MonApplication/remoting/MonServiceHttpInvoker</value> </property> <!-- Configuration de l'interface du service que le proxy doit implémenter --> <property name="serviceInterface"> <value>com.developpez.spring.remoting.MonService</value> </property> </bean> |
Hessian est un protocole binaire, basé sur http pour exporter un service. Il est normalement indépendant du langage, mais actuellement principalement utilisé pour des applications Java à Java.
Afin d'exporter un service avec Hessian, il est nécessaire que celui-ci soit composé d'une interface et d'une implémentation.
Dès lors il est très simple d'exporter un service :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- Configuration du service en lui-même --> <bean id="monService" class="com.developpez.spring.remoting.MonServiceImpl"> <!-- Définition des propriétés --> </bean> <bean name="/MonServiceHessian" class="org.springframework.remoting.caucho.HessianerviceExporter"> <!-- Spécification de l'implémentation du service --> <property name="service"> <ref bean="monService"/> </property> <!-- Spécification de l'interface du service à exporter --> <property name="serviceInterface"> <value>com.developpez.spring.remoting.MonService</value> </property> </bean> |
Par exemple, pour une Servlet de nom remoting, c'est dans un fichier WEB-INF/remoting-servlet.xml. Le fichier web.xml correspondant pourrait être :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | <servlet> <servlet-name>remoting</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping> |
Au niveau du client, il existe un mécanisme similaire pour se connecter au service :
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | <bean id="monServiceProxy" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> <!-- Configuration de l'URL d'accès --> <property name="serviceUrl"> <value>http://localhost:8080/MonApplication/remoting/MonServiceHessian</value> </property> <!-- Configuration de l'interface du service que le proxy doit implémenter --> <property name="serviceInterface"> <value>com.developpez.spring.remoting.MonService</value> </property> </bean> |
Pour intégrer Apache Axis2 et Spring de manière à ce que ce dernier gère les instances des web services, il faut déclarer le bean qui représente le web service dans le fichier de configuration du web service, c'est-à-dire dans le fichier « services.xml » via le tag « SpringBeanName ».
Code xml : | Sélectionner tout |
<parameter name="SpringBeanName" locked="false">monBeanWebService</parameter>
Code xml : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <service name="MonService"> <description> Mon super service </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceObjectSupplier" locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter> <parameter name="SpringBeanName" locked="false">monBeanWebService</parameter> <parameter name="useOriginalwsdl">true</parameter> </service> |
Code xml : | Sélectionner tout |
1 2 | <parameter name="ServiceObjectSupplier" locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter> <parameter name="SpringBeanName" locked="false">monBeanWebService</parameter> |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.