Acceso a servicios Alfresco (NodeService, SearchService...)

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

Acceso a servicios Alfresco (NodeService, SearchService...)

Hola, estoy implementando un webscript basado en Java. El problema que se me plantea es que no sé como puedo acceder a los servicios de la API Alfresco (NodeService o SearchService, por ejemplo) desde clases "comunes" a varios webscripts. Es decir, tengo el siguiente código Java perteneciente a mi primer webscript:
public void execute(WebScriptRequest webscriptRequest, WebScriptResponse webscriptResponse) throws IOException {
    String xmlResponse = null;
    xmlResponse = Utiles.ejemploMetodoEnOtraClase();
    webscriptResponse.getWriter().write(xmlResponse);
}

¿Cómo acceder a los servicios que dependen del ServiceRegistry desde una clase que no es de Spring? (Nota: no tengo casi ni idea de Spring)

Muchas gracias.
3 Replies
pjcaracuel_2349
Active Member II

Re: Acceso a servicios Alfresco (NodeService, SearchService...)

Buenas,

Quizas lo hayas mirado ya, pero por si no aqui te dejo este post

http://forums.alfresco.com/en/viewtopic.php?f=4&t=7061

Saludos
dacedos
Member II

Re: Acceso a servicios Alfresco (NodeService, SearchService...)

jajaja nosotros tenemos esa "frase magica"

Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getNodeService();
Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getPersonService();
Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getSearchService()



Si tienes el eclipse bien configurado puedes ver los servicios disponibles!
agranjo
Member II

Re: Acceso a servicios Alfresco (NodeService, SearchService...)

La verdad es que FacesContext.getCurrentInstance() siempre me retorna null… al final lo solucioné con 2 clases:
public class AlfrescoAppContext {
   private static ApplicationContext ctx; 
    
    /**
     * Injected from the class "ApplicationContextProvider" which is automatically
     * loaded during Spring-Initialization.
     */ 
    public static void setApplicationContext(ApplicationContext applicationContext) { 
        ctx = applicationContext; 
    } 
 
    /**
     * Get access to the Spring ApplicationContext from everywhere in your Application.
     *
     * @return
     */ 
    public static ApplicationContext getApplicationContext() { 
        return ctx; 
    }
}
public class AlfrescoAppContextProvider implements ApplicationContextAware {
       public void setApplicationContext(ApplicationContext ctx) throws BeansException { 
           // Wiring the ApplicationContext into a static method 
           AlfrescoAppContext.setApplicationContext(ctx); 
       } 
}

y estas líneas en un *-context.xml:
<bean id="alfrescoApplicationContextProvider" class="<aqui el paquete de la clase>.AlfrescoAppContextProvider" />

Y ahora recupero el contexto con AlfrescoAppContext.getApplicationContext().

Saludos.