webService Alfresco

cancel
Showing results for 
Search instead for 
Did you mean: 
hadabechir_4088
Member II

webService Alfresco

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
rguinot
Customer

Re: webService Alfresco

etes vous sur que les web services correspondent au besoin ?
hadabechir_4088
Member II

Re: webService Alfresco

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
Member II

Re: webService Alfresco

J'ai pas trouvé une solution pour cette ereeur la !!
help please  Smiley Sad
cleseach
Active Member II

Re: webService Alfresco

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
Member II

Re: webService Alfresco

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
Active Member II

Re: webService Alfresco

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