cancel
Showing results for 
Search instead for 
Did you mean: 

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

agranjo
Champ in-the-making
Champ in-the-making
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 3

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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.
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.