cancel
Showing results for 
Search instead for 
Did you mean: 

webService Alfresco

hadabechir_4088
Champ in-the-making
Champ in-the-making
bonjour, je travail maintenant avec alfresco 3.0, dans mon projet j'ai besoin de creer un classe qui se connecte au repository pour extraire des fichier xml , mais lorceque j'exécute ma classe voila l'erreur que je recoi :cry:

15:52:42,031 WARN  [EngineConfigurationFactoryFinder] Factory org.apache.axis.configuration.EngineConfigurationFactoryServlet Ignored: missing required method: public static EngineConfigurationFactory newFactory(Object).
15:52:42,031 WARN  [EngineConfigurationFactoryFinder] Factory org.apache.axis.configuration.EngineConfigurationFactoryDefault Ignored: missing required method: public static EngineConfigurationFactory newFactory(Object).
15:52:43,515 INFO  [STDOUT] Error starting session.

sachant que j'ai suivi l'exemple 'FirstWebServiceClient' du SDK .
6 REPLIES 6

rguinot
Confirmed Champ
Confirmed Champ
etes vous sur que les web services correspondent au besoin ?

hadabechir_4088
Champ in-the-making
Champ in-the-making
Oui, parceque j'ai une autre partie du projet que je réalise avec C++ (donc il suffit de générer le client du webservice (correspondant) pour pouvoir acceder au repository d'alfresco)

hadabechir_4088
Champ in-the-making
Champ in-the-making
J'ai pas trouvé une solution pour cette ereeur la !!
help please  Smiley Sad

cleseach
Star Contributor
Star Contributor
Bonjour,

Des précisions sont nécessaires à la communauté pour vous apporter son aide.
Il me semble que le mieux est de nous montrer le code qui produit une telle erreur.

Cordialement,
Charles Le Seac'h

hadabechir_4088
Champ in-the-making
Champ in-the-making
Bjr, merci de me répondre
Voila le code qui me génére l'erreur:

Caused by: org.alfresco.webservice.util.WebServiceException: Error starting session.
   at org.alfresco.webservice.util.AuthenticationUtils.startSession(AuthenticationUtils.java:94)
Caused by: java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl
   at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
   at org.apache.axis.client.Call.invoke(Call.java:1828)
   at org.alfresco.webservice.authentication.AuthenticationServiceSoapBindingStub.startSession(AuthenticationServiceSoapBindingStub.java:187)
   at org.alfresco.webservice.util.AuthenticationUtils.startSession(AuthenticationUtils.java:79)
   … 45 more
Caused by: java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl
   at org.apache.axis.Message.setup(Message.java:352)
   at org.apache.axis.Message.<init>(Message.java:246)
   at org.apache.axis.client.Call.invoke(Call.java:2425)
   at org.apache.axis.client.Call.invoke(Call.java:2366)
   at org.apache.axis.client.Call.invoke(Call.java:1812)


package org.consulteRepository;

import java.io.IOException;
import java.io.InputStream;
import java.rmi.RemoteException;
import java.util.LinkedList;
import java.util.List;

import org.alfresco.webservice.authentication.AuthenticationFault;
import org.alfresco.webservice.content.Content;
import org.alfresco.webservice.content.ContentServiceSoapBindingStub;
import org.alfresco.webservice.repository.QueryResult;
import org.alfresco.webservice.repository.RepositoryFault;
import org.alfresco.webservice.repository.RepositoryServiceSoapBindingStub;
import org.alfresco.webservice.types.Predicate;
import org.alfresco.webservice.types.Reference;
import org.alfresco.webservice.types.ResultSet;
import org.alfresco.webservice.types.ResultSetRow;
import org.alfresco.webservice.types.ResultSetRowNode;
import org.alfresco.webservice.types.Store;
import org.alfresco.webservice.util.Constants;
import org.alfresco.webservice.util.ContentUtils;
import org.alfresco.webservice.util.WebServiceFactory;
import org.apache.axis.AxisFault;


public class FilesExtractor
{
   InputStream[] files;
   
   public FilesExtractor()
   {
         
   }
   
   public void setFiles(InputStream[] files)
   {
      this.files = files;
   }
   public InputStream[] getFiles()
   {
      return files;
   }   
   public void extractFiles() throws AuthenticationFault, RemoteException
   {
      WebServiceFactory.setEndpointAddress("http://localhost:8080/alfresco/service");
                //WebServiceFactory.setEndpointAddress("http://localhost:8080/alfresco/API");
      WebServiceFactory.getAuthenticationService().startSession("admin", "admin");
      //AuthenticationUtils.startSession("admin", "admin");
      //AuthenticationUtils.getTicket();
      
      Store storeRef = new Store(Constants.WORKSPACE_STORE, "SpacesStore");           
        Reference reference = new Reference(storeRef,null,"/app:company_home/cm:Ardia");
       
        RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();
      
        QueryResult qr;
        qr = repositoryService.queryChildren(reference);           
        ResultSet rs = qr.getResultSet();           
        ResultSetRow[] rows = rs.getRows();
        List<Reference> r= new LinkedList<Reference>();
       
        for (ResultSetRow row:rows)
        {
           ResultSetRowNode node = row.getNode();               
            r.add(new Reference(storeRef,(String)node.getId(),"/app:company_home/cm:Ardia/"));
        }    
     
        Reference[] ref = new Reference[r.size()];
        r.toArray(ref);
        Predicate p = new Predicate(ref, storeRef, null);       
       
        ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();
        Content[] readResult = contentService.read(p, Constants.PROP_CONTENT); 
                 
        files = new InputStream[readResult.length];
       
        for (int i = 0; i<ref.length; i++)
        {
           files[i] = ContentUtils.getContentAsInputStream(readResult[i]);
        } 
       
        setFiles(files);
    }   
}

Quand j'exécute ce code en console ca marche, les problémes commencent quand je met mon code dans une jsp dans mon application web (j'utilise jboss pour mon application et Alfresco est tj sur Tomcat donc deux serveurs communicants entre eux)

cleseach
Star Contributor
Star Contributor
Bonjour,

Quand je vois ça :
Caused by: org.alfresco.webservice.util.WebServiceException: Error starting session.
je me dis : "tiens, il doit y avoir un problème avec l'authentification".

Alors je regarde comment est faite cette authentification et je lis :
WebServiceFactory.getAuthenticationService().startSession("admin", "admin");
plutôt que le traditionnel (et commenté) :
AuthenticationUtils.startSession("admin", "admin");

Aussi me demandais-je la différence entre ces deux modes d'authentification et regardais-je le code de AuthenticationUtils.startSession :
// Start the session
AuthenticationResult result = WebServiceFactory.getAuthenticationService().startSession(username, password);          
           
// Store the ticket for use later
authenticationDetails.set(new AuthenticationDetails(result.getUsername(), result.getTicket(), result.getSessionid()));

On retrouve bien la première ligne dans notre code personnel. En revanche, quid de la deuxième qui enregistre le ticket pour un usage futur ?
J'imagine assez aisément que sans enregistrer le ticket, on risque de se faire méchamment jeter au prochain appel.
Essayez donc de reprendre votre code en utilisant AuthenticationUtils.startSession.

Reste la question de pourquoi ça marche en console… vous êtes sûr d'utiliser le code fourni ?

Cordialement,
Charles Le Seac'h