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.