IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Premier développement de services web avec Spring-WS


Sujet :

Services Web Java

  1. #1
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut Premier développement de services web avec Spring-WS
    Bonjour,

    Je travaille actuellement sur le déploiement de services web avec le framework Spring-WS.

    Pour cela, j'ai installé le plugin Maven 3.1.4 sur NetBeans 6.1.

    J'ai commencé par suivre le tutorial officiel et ce tutorial proposé sur developpez.com.

    Mais sur ces deux tutoriaux, je n'ai trouvé aucune trace de l'implémentation métier des services web à déployer...

    J'ai tout de même récupéré le code source manquant pour le tutorial officiel dans les samples fournis avec la distribution 1.5.4 de Spring-WS.

    Une fois l'archive war construite et déployée, le contrat WSDL du service web est bien accessible avec un navigateur.

    Toutefois, lorsque j'essaie de consommer le service web avec une application cliente, le loggeur enregistre l'erreur :
    16 sept. 2008 09:32:01 com.sun.xml.messaging.saaj.soap.EnvelopeFactory createEnvelope
    GRAVE: SAAJ0511: Unable to create envelope from given source
    J'ai alors modifié l'implémentation du service web pour qu'il retourne une chaîne de caractères et le client retourne alors l'exception :
    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
    faultSubcode:
    faultString: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}stackTrace:Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at com.mycompany.hr.definitions.HumanResourceSoap11Stub.holiday(HumanResourceSoap11Stub.java:178)
    at client.HolidayClient.main(HolidayClient.java:35)
    J'ai ensuite cherché à développer un service web simple (un classique Hello) en suivant le tutorial d'Hikage, mais j'ai du mal à comprendre la signification de l'élément traductionService du fichier de configuration spring-ws-servlet.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <bean id="traductionEndpoint" class="be.hikage.spring.ws.endpoint.TraductionEndpoint">
       <property name="traductionService" ref="traductionService"/>
    </bean>
    En développant un service Hello par imitation, j'obtiens l'exception suivante lorsque je tente d'accéder au contrat WSDL du service après son déploiement :
    org.springframework.beans.InvalidPropertyException: Invalid property 'helloService' of bean class [endpoint.HelloWSEndpoint]: No property 'helloService' found
    Si j'enlève cette ligne, j'obtiens l'exception :
    org.springframework.beans.factory.BeanInitializationException: Could not initialize WebServiceMessageReceiverHandlerAdapter; nested exception is org.springframework.beans.factory.BeanCreationException: Invocation of init method failed; nested exception is org.springframework.ws.soap.SoapMessageCreationException: Could not create SAAJ MessageFactory: Unable to create message factory for SOAP: Unable to create SAAJ meta-factoryProvider com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl not found; nested exception is javax.xml.soap.SOAPException: Unable to create message factory for SOAP: Unable to create SAAJ meta-factoryProvider com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl not found
    Quelqu'un pourrait-il m'en dire plus sur cette propriété ?

    Merci à vous.

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    Je suis retombé sur la présentation du framework Spring-WS qui est décrit comme permettant le développement de services web suivant une approche contract-first.
    Or, d'après ce que j'ai pu voir de Spring-WS, la rédaction du contrat WSDL complet n'est pas nécessaire, mais simplement la définition du schéma de données (dans un fichier xsd annexe). De plus (je n'en ai pas trouvé mention dans les deux tutoriaux cités précédemment ni dans la distribution 1.5.4 de Spring-WS), le framework ne propose pas (corrigez-moi si je me trompe) d'outils de génération du code Java à partir du contrat WSDL : il faut donc bien implémenter le service web...
    Ainsi, je vois mal ce qui permet de qualifier Spring-WS de framework de développement des services web suivant une approche contract-first...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai du mal à comprendre la signification de l'élément traductionService du fichier de configuration spring-ws-servlet.xml
    Moi non plus je n'ai pas compris à quoi servait traductionService comme il n'y a pas de listing de cette classe.

    Je cherche à faire tourner le projet avec netbeans, vous savez comment vous y prendre?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut ClassNotFoundException
    J'ai suivi le tutoriel officiel et celui de developpez.com pour créer mon propre service, tout ce passe bien, je termine par "mvn install", le war est créé
    Lorsque je le déploie sur le serveur, le répertoire adéquat est bien créé, mais lorsque je fais appel au service via mozilla, il me dit toujours que la classe n'est pas disponible dans le répertoire be.memel.spring.ws lors de l'initiation du bean correspondant
    alors j'ai fait 2 test :
    WEB-INF/be/memel/spring/ws/Maclasse.class
    et
    WEB-INF/classes/be/memel/spring/ws/Maclasse.class

    et rien n'y fait
    Quelqu'un pourrait m'aider ??

    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut Business traduction
    Citation Envoyé par deebak Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai du mal à comprendre la signification de l'élément traductionService du fichier de configuration spring-ws-servlet.xml
    Moi non plus je n'ai pas compris à quoi servait traductionService comme il n'y a pas de listing de cette classe.

    Je cherche à faire tourner le projet avec netbeans, vous savez comment vous y prendre?
    Tu dois créer ton modèle qui permettra de traduire le texte. dans spring-ws-servlet.xml tu devra créer un autre bean du type
    "<bean id=traductionService class=be.hikage.spring.ws.MonTravail />" qui aura une méthode traduitTexte(String langueOrigine, String langueDestination,
    String texteOriginal) et qui renvoie un objet de type Traduction que tu dois créer toi même également

    j'espère t'avoir aidé

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut traductionService ???
    Citation Envoyé par deebak Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai du mal à comprendre la signification de l'élément traductionService du fichier de configuration spring-ws-servlet.xml
    Moi non plus je n'ai pas compris à quoi servait traductionService comme il n'y a pas de listing de cette classe.

    Je cherche à faire tourner le projet avec netbeans, vous savez comment vous y prendre?
    Tu dois créer ton modèle qui permettra de traduire le texte. dans spring-ws-servlet.xml tu devra créer un autre bean du type
    "<bean id=traductionService class=be.hikage.spring.ws.MonTravail />" qui aura une méthode traduitTexte(String langueOrigine, String langueDestination,
    String texteOriginal) et qui renvoie un objet de type Traduction que tu dois créer toi même également

    j'espère t'avoir aidé

Discussions similaires

  1. Réponses: 14
    Dernier message: 29/10/2014, 01h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo