Je veux utiliser les Webservices pour créer une appli externe communiquant avec Alfresco, je me suis donc basé sur le SDK. Le problème est que je n'arrive pas à utiliser un autre Webservice une fois l'authentification faite (j'utilise les Classes AuthenticationUtils et WebServicesFactory), j'ai l'impression qu'il perd immédiatement le ticket ou quelque chose comme ça. J'ai l'erreur suivante : Exception in thread "main" AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException faultSubcode: faultString: WSDoAllReceiver: security processing failed; nested exception is: org.apache.ws.security.WSSecurityException: General security error (WSSecurityEngine: Callback supplied no password for: ticket) faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}hostname:memoscope
WSDoAllReceiver: security processing failed; nested exception is: org.apache.ws.security.WSSecurityException: General security error (WSSecurityEngine: Callback supplied no password for: ticket) 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(AbstractSAXParser.java:633) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) 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 org.alfresco.webservice.repository.RepositoryServiceSoapBindingStub.getStores(RepositoryServiceSoapBindingStub.java:714) at org.alfresco.sample.webservice.GetStores.main(GetStores.java:50)
Quelqu'un a déjà rencontré ce problème ? :rolleyes:
Je viens d'avancer sur mon problème…. Apparement le serveur Alfresco que j'attaque tourne sur 2 instances. Si j'arrête une des deux instances, je ne reproduit plus l'erreur ! Quelqu'un sait comment garder la main sur la même instance quand on a démarrer une session d'un Webservice. Je ne sais pas trop où chercher, du côté axis, soap, configuration sur le serveur Alfresco ?? Merci de m'aider
Tu as deux instances en cluster, donc tu dois avoir un load balancer en frontal (apache peut-etre ?) qui repartit sur les serveur alfresco. Le ticket doit être valable uniquement sur une seule instance alfresco. Deux solutions : - met en place la replication des sessions au niveau des ton serveur d'application (alfresco) - configure ton loadbalancer en sticky session. Par contre, je suis pas sur que ca fonctionne dans le cas d'un webservices
Merci pour ton aide J'ai trouver la solution en modifiant la configuration de la réplication entres les instances :
L2 Cache Replication Active the extension sample ehcache-custom.xml.sample.cluster, but force the cache of authentication tickets to replicate via copy throughout the cluster: