Pages

mardi 21 août 2012

Problème Spring WS erreur 'attachmentCacheDir' must be a directory

Je suis tombé sur une erreur assez bizarre sur laquelle j'ai perdu une petite demie heure
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageFactory' defined in class path resource [ggr-server-clientwebserviceContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'attachmentCacheDir' must be a directory

Lors de la déclaration d'un WebServiceTemplate pour appeler un webservice

   <bean id="webServiceTemplateEbx" 
        class="org.springframework.ws.client.core.WebServiceTemplate">
        <constructor-arg ref="messageFactory" />
        <property name="defaultUri" value="=http://localhost:2580/process/myws"/>
        <property name="marshaller" ref="myWebServiceMarshaller" />
        <property name="unmarshaller" ref="myWebServiceMarshaller" />
        <property name="messageSender" ref="httpSender" />
   </bean>

nous devons déclarer comme argument au constructeur une messageFactory

         <bean id="messageFactory"
class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
<property name="payloadCaching" value="true" />
<property name="attachmentCaching" value="true" />
</bean>


Si attachmentCaching est défini à true,  SpringWs cherchera à rattacher un répertoire de travail pour gérer le cache. On peut ajouter la déclaration de la proprité attachmentCacheDir dans le bean  messageFactory.

Si aucune valeur n'est définie Spring choisira le répertoire défini par défaut (récupération de la variable d'environnement java.io.tmpdir. Cette variable est souvent définie dans les paramètres de la JVM associé à Tomcat et pointe vers le répertoire temp de Tomcat


Mon erreur était liée au fait que le répertoire temp dans Tomcat avait été supprimé




Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.