webscript et webscript java [résolu]

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

webscript et webscript java [résolu]

bonjour

j'ai une routine à écrire : exploration d'un espace et soumission du contenu de chaque document à un analyseur sémantique (l'analyseur sémantique est accessible à travers un web service (donc appel classe java) ).

1) J'ai l'intuition que la solution passe par un "java backed web script" et non par un webscript javascript : qu'en pensez vous ? (il y a notamment des préoccupations de volumes, et donc de performances)

Pour cela, j'explore le domaine du développement des web-scripts, et ai commencé par les exemples donnés par le wiki (les routines "dir" et "javadir" –> docs.alfresco.com/4.2/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Ftopics%2Fguh-wcm-welcome-expl...).

2) j'ai une difficulté : je récupère systématiquement une erreur 404 sur appel de l'URL
'> http://localhost:8080/alfresco/service/javadir/Company%20Home?verbose=true

le code java (trouvé sur le wiki) :

// extract folder listing arguments from URI
   String verboseArg = req.getParameter("verbose");
   Boolean verbose = Boolean.parseBoolean(verboseArg);
   Map<String, String> templateArgs = req.getServiceMatch().getTemplateVars();
   String folderPath = templateArgs.get("folderpath");
   String nodePath = "workspace/SpacesStore/" + folderPath;
   NodeRef folder = repository.findNodeRef("path", nodePath.split("/"));
  
  // validate that folder has been found
  if (folder == null)
  {
     throw new WebScriptException(Status.STATUS_NOT_FOUND,
       "Folder " + folderPath + " not found");
   }

  // construct model for response template to render
  Map<String, Object> model = new HashMap<String, Object>();
  model.put("verbose", verbose);
  model.put("folder", folder);
  return model;

merci pour votre réponse

fred
4 Replies
cleseach
Active Member II

Re: webscript et webscript java [résolu]

Bonjour,

Sans précision complémentaire, le code 404 peut signifier :
  • que l'url que vous utilisez ne correspond à aucun webscript ;

  • que le dossier utilisé n'existe pas.
Pour savoir quelle est la bonne option, il faudrait un peu de détail sur votre webscript (fichier desc.xml en particulier) et le message de retour complet, voire les logs.

Cordialement,
Charles Le Seac'h
fmarin
Member II

Re: webscript et webscript java [résolu]

Bonjour

tout se passe comme si "Company%20Home" n"était pas reconnu ; l'url retournée est retranscrite en "Company Home" … et non "Company%20Home"

pour confirmer la bonne exécution du webscript, j'ai changé le message d'erreur qui est alors bien retourné avec l'erreur 404 : le webscript est donc bien reconnu

concernant les logs, les seules mentions que j'ai pu trouver de l'appel au webscript se trouvent dans une log tomcat (localhost_access_log) :

127.0.0.1 - - [10/Dec/2012:15:30:28 +0100] "GET /alfresco/service/javadir/Company%Home HTTP/1.1" 400 -

la config du webscript :

<webscript><shortname>Folder Listing Utility</shortname><description>Java-backed implementation of listing folder contents
  </description><url>/javadir/{folderpath}?verbose={verbose?}</url><authentication>user</authentication></webscript>

l'erreur 404 :

The Web Script /alfresco/service/javadir/Company Home has responded with a status of 404 - Not Found.

404 Description:   Requested resource is not available.

Message:   11100007 Folder Company Home not found
   
Exception:   org.springframework.extensions.webscripts.WebScriptException - 11100007 Folder Company Home not found
   
   com.alfresco.alfeo.JavaDir.executeImpl(JavaDir.java:36)
   org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:64)
   org.alfresco.repo.web.scripts.RepositoryContainer$3.execute(RepositoryContainer.java:429)
   org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:433)
   org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:491)
   org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:529)
   org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:345)
   org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:377)
   org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:209)
   org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:61)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
   org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
   org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
   org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   java.lang.Thread.run(Thread.java:722)

fred
cleseach
Active Member II

Re: webscript et webscript java [résolu]

Bonjour,

Si votre installation est faite en français, le "display name" du répertoire racine s'appelle "Espace racine" et non "Company Home".
Votre webscript fonctionne-t-il en utilisant cette valeur ?

Cordialement,
Charles Le Seac'h
fmarin
Member II

Re: webscript et webscript java [résolu]

bonjour

my god !

la confusion vient du fait que j'utilise d'autres webscripts natifs du style bulkload … et que j'ai eu quelques difficultés à identifier les conventions générales de nommage (je ne me suis jamais posé la question de la traduction, dans la mesure où toutes les docs que j'ai sont en anglais …); maintenant, effectivement, cela paraît logique  Smiley Very Happy

oui, cela marche nettement mieux avec Espace racine

une dernière question : où trouver ces conventions de nommage dans le wiki ? ou autre (…)

merci pour votre aide

fred