[SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

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

[SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Hola a todos!

Estoy desarrollando una aplicación externa que debería conectar con dos Alfrescos al mismo tiempo, para realizar tareas de lectura/escritura entre uno y otro (en base a unas premisas que no vienen al caso).

El problema que me encuentro es que siempre que he accedido a los WS de Alfresco mediante Java, me he autenticado de esta forma:


AuthenticationUtils.startSession(USERNAME, PASSWORD);


¿Cómo puedo hacer para estar autenticado en ambos Alfresco a la vez para leer de uno, y escribir en el otro sin tener que conectar/desconectar?

Muchas gracias de antemano, un saludo!
8 Replies
rhakaro
Member II

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Hola de nuevo,

He estado buscando información y parece complicado, la verdad que no consigo ver cómo mantener dos conexiones con Alfrescos distintos. ¿Puede que la mejor opción sea crear dos aplicaciones diferentes?

Es decir, tendría la aplicación principal que se conectaría al Alfresco Origen, y una segunda a la que haría peticiones para ir actualizando el Alfresco Destino.

El problema que le veo a esto es que abriría y cerraría conexiones con Destino demasiado rápido, tengo miedo que llegue a ser un problema.

¿Qué os parece?
cristinamr
Advanced

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

No me queda claro… Tu estás haciendo un desarrollo (pongamos en Java) y el problema es que no sabes como autenticar los dos a la vez y hacer transacciones entre ellos?
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
rhakaro
Member II

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Hola Cristina,

Gracias por tu interés. Sí, en efecto, estoy tratando de, desde una aplicación Java independiente, conectar desde una misma clase/método… con dos Alfrescos para obtener documentos de uno, e ir metiéndolos en otro. La idea es que sean muchos, por lo que no nos viene bien almacenar primero todo y luego subirlo al otro Alfresco.

Mi pregunta es puramente técnica, ya que para conectar con un Alfresco mediante WS utilizo lo siguiente:


WebServiceFactory.setEndpointAddress(ALF_URL);
AuthenticationUtils.startSession(USERNAME, PASSWORD);

RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();    

[…]

QueryResult queryResult = repositoryService.query(STORE, query, false);

[…]


Así que no veo cómo conectar con Alfresco origen y después con Alfresco destino sin cerrar la conexión con el primero, y trabajando contra ambos a la vez.
cristinamr
Advanced

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Bufff… ¿usas webservices? Hace muchos años que no se actualiza la api.. Deberías a lo mejor usar la API de JAVA (aquí más info), además de que se actualiza tienes un montón de servicios que puedes usar, o incluso hacerlo vía CMIS.

Toma esa referencia como punto de partida, después es mirar qué servicios pueden valerte. Voy a ir mirando más en mi tiempo libre.. Si descubro algo te lo comento.

Un saludo!
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
rhakaro
Member II

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Hola Cristina, muchas gracias por tu ayuda.

Utilizo Web Services porque la aplicación que estoy haciendo es externa a Alfresco, debería poder correr en cualquier máquina. No sé si habrá una solución mejor en estos casos.
cristinamr
Advanced

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Uhmmm… qué tiene que er? Es decir, tu puedes hcaer una app externa y utilizar la API que desees. Como si quieres usar Webscripts. El problema en este caso es que usas una API obsoleta y habrá muchas cosas que no podrás realizar de antemano (por ejemplo, a bote pronto, no puedes hacer nada relacionado con "sites").

De todas formas, en teoría tu abres una autenticacion y obtienes un ticket, lo mismo para otros servidores. Desconozco si con la API de WebServices puedes realizar operaciones entre ambos, pero con la de Java sip.

Un saludo.
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
rhakaro
Member II

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Ok Cristina, probaré lo que comentas a ver qué sale. Os informaré.

Muchas gracias!
rhakaro
Member II

Re: [SOLUCIONADO] Conectar con dos Alfresco al mismo tiempo

Hola a todos.

Creo que ya he solucionado lo de conectar dos Alfrescos a la vez (por lo menos para listar documentos funciona).

Es tan tonto como crear una clase así por ejemplo:

<java>
public class AlfrescoConn {
   
   public AlfrescoConn(String alfUrl, String alfUsername, String alfPassword) throws AuthenticationFault{
      WebServiceFactory.setEndpointAddress(alfUrl);
      AuthenticationUtils.startSession(alfUsername, alfPassword);
   }

   public void close(){
      AuthenticationUtils.endSession();
   }
   
   public QueryResult executeQuery(Store STORE, Query query) throws RepositoryFault, RemoteException{

        RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();        

        return repositoryService.query(STORE, query, false);
   }
}
</java>

Y utilizarla para crear dos objetos, uno será el Alfresco de Origen y otro el de Destino:

<java>
public static void main(String [] args){

   AlfrescoConn alfSource = null;
   AlfrescoConn alfTarget = null;
   
   try{

      alfSource = new AlfrescoConn(SOURCE_URL, SOURCE_USERNAME, SOURCE_PASSWORD);
   
      QueryResult queryResult1 = alfSource.executeQuery(STORE, new Query(QUERY_LANG_LUCENE, "<BUSQUEDA>");
         
      ResultSet resultSet1 = queryResult1.getResultSet();


      alfTarget = new AlfrescoConn(TARGET_URL, TARGET_USERNAME, TARGET_PASSWORD);
         
      QueryResult queryResult2 = alfTarget.executeQuery(STORE, new Query(QUERY_LANG_LUCENE, "<BUSQUEDA>");
      
      ResultSet resultSet2 = queryResult2.getResultSet();

      
   } catch (Exception e) {
      e.printStacktrace();

   } finally {         
      if(alfSource != null){
         alfSource.close();
      }
      
      if(alfTarget != null){
         alfTarget.close();
      }
   }
}
</java>

El código que he puesto no tiene mucho sentido, es sólo para probar. Si se hace resultSet.getTotalRowCount() de cada Alfresoo, da un numero distinto y coincidente con el que que tiene cada Alfresco.