cancel
Showing results for 
Search instead for 
Did you mean: 

J'ai créé une appli web en struts qui utilise les...

dewi
Champ in-the-making
Champ in-the-making
Bonjour,

J'ai créé une appli web en struts qui utilise les web services d'alfresco. Je me suis basé sur les exemples SDK pour la réaliser. Mais il y a quelques points bscurs pour moi, concernant la notion de ticket.

- J'ai créé la page de connexion. Dans mon code Java:
AuthenticationUtils.startSession(lgn, psw);
- Dans mon appli, je navigue, fait des recherches et autres choses, quand parfois cela me donne une erruer comme celle ci:
WSDoAllSender: password callback failed; nested exception is:
   org.alfresco.webservice.util.WebServiceException: Ticket could not be found when calling callback handler.
- j'ai donc cherché un peu comment faire une connexion plus propre. Sur le forum officiel, je trouve le post: http://forums.alfresco.com/viewtopic.php?t=7195&highlight=ticket qui me renvoie sur la page du wiki suivante: http://wiki.alfresco.com/wiki/Web_Service_Samples_for_Java
- Mon anglais étant très moyen, il y a plusieurs questions que je me pose:

Doit-on utiliser le code donné sur le wik lors de chaque appel à un web service ?:
// Get a reference to the
   AuthenticationServiceSoapBindingStub authenticationService =
      (AuthenticationServiceSoapBindingStub) new AuthenticationServiceLocator()
      .getAuthenticationService();
       
   // Start the session
   AuthenticationResult result = authenticationService
                                 .startSession(userName, password);
   String ticket = result.getTicket();


// business à faire


// End the session
   authenticationService.endSession(ticket);
Car dans ce cas je dois toujours garder quelque part le username et password pour appeler "authenticationService.startSession(userName, password);"

Et 2eme question: comment savoir quand utiliser
AuthenticationUtils.startSession(lgn, psw);
ou
AuthenticationResult result = authenticationService
                                 .startSession(userName, password);
   String ticket = result.getTicket();
?

Merci pour l'aide Smiley Happy
4 REPLIES 4

dewi
Champ in-the-making
Champ in-the-making
Si ma question est stupide, dites le moi aussi, hein ^^

dewi
Champ in-the-making
Champ in-the-making
Bon, d'après ce que j'ai compris, il faut établir une session avant chaque appel à un web service d'Alfresco. C'est ce que j'ai fait, et ça marche pour la plupart des cas. Mais dans ce cas précis:
public List<ContentResult> getRankedContent(String username, String password) throws ServiceException, AuthenticationFault, RemoteException {
      List<ContentResult> results = new ArrayList<ContentResult>();
      //—————————————-
      AuthenticationServiceSoapBindingStub authenticationService = (AuthenticationServiceSoapBindingStub) new AuthenticationServiceLocator()
      .getAuthenticationService();
      AuthenticationResult result = authenticationService.startSession(
            username, password);
      System.out.println("result: "+  result);
      
      
      //—————————————-      
      try {
         RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory
               .getRepositoryService();

         // Define query
         Query query = new Query(Constants.QUERY_LANG_LUCENE, "TEXT:" + this.getText());
         // Execute the query with includeMetadata = true
         QueryResult queryResult = repositoryService.query(store, query,
               true);

         System.out.println("Statement: " +query.getStatement());
j'ai un "Ticket could not be found when calling callback handler" au niveau de l'appel de repositorry.query(store, query,   true);

Alors je ne sais pas trop comment faire. Croyant que c'était un problème d'initialisation de session, j'ai rajouté les arguments username et password ainsi que l'entre //—– dans la méthode getRankedContent, mais cela m'a donné le même résultat que sans.
A noter que le result me renvoie bien un string représentant le ticket, mais je n'ai pas saisi comment l'utiliser Smiley Sad

Please help

thomasb
Champ in-the-making
Champ in-the-making
AuthenticationUtils utilise en fait la méthode documentée dans Web Service Samples for Java et notamment la section Using the Ticket. WebServiceFactory de son côté crée les services en utilisant la méthode document à la toute fin de la page de Wiki, et donc tirant automatiquement partie de l'authentification réalisée avec AuthenticationUtils.

En résumé, pour appeler des Web Services, le schéma est:
  1. AuthenticationUtils.startSession(username, password);
  2. appels de Web Services (instances créées avec WebServiceFactory), à répéter autant de fois qu'on veut
  3. AuthenticationUtils.endSession();

dewi
Champ in-the-making
Champ in-the-making
Merci beaucoup Smiley Happy
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.