cancel
Showing results for 
Search instead for 
Did you mean: 

CMIS e Java8

blade
Confirmed Champ
Confirmed Champ
Ciao a tutti,

vi disturbo nuovamente per chiedervi se vi è capitato che le performance della creazione della sessione in Alfresco con CMIS si siano notevolmente rallentate con l'installazione di Java8.


HashMap<String, String> params = new HashMap<String, String>();
      params.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom");
      params.put(SessionParameter.USER, user);//utente admin
      params.put(SessionParameter.PASSWORD, password);//psw admin
      params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
      params.put(SessionParameter.OBJECT_FACTORY_CLASS,"org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");
      
      try
      {
         SessionFactory factory = SessionFactoryImpl.newInstance();
         setSessionCMIS(factory.getRepositories(params).get(0).createSession());
      }
      catch (Exception e)
      {
         logger.error("Errore nella createSessionCMIS: " + e.hashCode() + ' ' + e.toString());
      }


Con Java7 quando lancio l'upload non ho problemi circa 2 secondi
Con Java8 140 secondi!
In debug non ho problemi.

A voi è mai capitato?
1 ACCEPTED ANSWER

blade
Confirmed Champ
Confirmed Champ
Ho capito il problema della lentezza di connessione.

Il mio progetto aveva i riferimenti ai jar di cmis vecchia versione (0.7.0) aggiornandoli alla nuova versione (0.14.0) e aggiornando le varie dipendenze alle nuove release i tempi di connessione sono ritornati quelli normali.

View answer in original post

9 REPLIES 9

openpj
Elite Collaborator
Elite Collaborator
Ma intendi dire JDK?
Parli della runtime del server di Alfresco, giusto?
Che versione di Alfresco stai usando?

blade
Confirmed Champ
Confirmed Champ
Ciao Piergiorgio

Sì sto parlando di JDK e del runtime server di Alfresco.
Sto usando la versione 5.0 di Alfresco.

openpj
Elite Collaborator
Elite Collaborator
L'environment che usi quale è? Linux o Windows?

blade
Confirmed Champ
Confirmed Champ
Scusa non ho scritto i dettagli.

Alfresco 5.0.d con jre 1.8.0_31 SO Ubuntu
(ma anche la versione 4.2.f con jre 1.7.0)
Windows è il SO dal quale viene fatta la richiesta di upload
Jdk e jre 8

Sicuramente sbaglio io a impostare qualcosa nel mio progetto Java.

In debug da eclipse la createSession() non ho problemi, in esecuzione è lenta

davidciamberlan
Elite Collaborator
Elite Collaborator
Ciao,

visto che hai alfresco 5, prova ad usare la versione 1.1 di cmis (basta cambiare il valore nell'url).

Inoltre per il binding puoi provare ad usare Browser invece di Atompub (userai json in luogo di xml per lo scambio dei dati).

Grazie David per la risposta, ma non funziona: mi dà errore

Errore nella createSessionCMIS: 2024542466 org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException: Parsing exception!


HashMap<String, String> params = new HashMap<String, String>();
      params.put(SessionParameter.ATOMPUB_URL,"http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom");
      params.put(SessionParameter.BROWSER_URL,"http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom");
      params.put(SessionParameter.USER, user);
      params.put(SessionParameter.PASSWORD, password);
      params.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value());
      //params.put(SessionParameter.OBJECT_FACTORY_CLASS,"org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");
      
      try
      {
         SessionFactory factory = SessionFactoryImpl.newInstance();
         setSessionCMIS(factory.getRepositories(params).get(0).createSession());
      }
      catch (Exception e)
      {
         logger.error("Errore nella createSessionCMIS: " + e.hashCode() + ' ' + e.toString());
      }



ho provato anche con "http://95.110.234.12:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser" e la createSession avviene correttamente e velocemente, ma al momento di fare l'upload mi dà un altro errore
"org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: Property 'cm:title' doesn't exist!".
Se lo imposto mi dà lo stesso problema

Ciao,

se setti il binding a "browser" devi cambiare allo stesso modo anche l'url (alfresco/api/-default-/public/cmis/versions/1.1/browser).

Per quanto riguarda l'errore di upload: la property cm:title è nell'aspect cm:titled che devi aggiungere al tuo oggetto prima di valorizzare la property.

blade
Confirmed Champ
Confirmed Champ
Ho provato a fare quanto mi hai segnalato, ma il problema rimane.
La cosa che non capisco è che mi dà errore quando richiamo il getObjectPath().


AlfrescoFolder destinationPath = (AlfrescoFolder) getSessionCMIS().getObjectByPath("/Sites/demo/documentLibrary/Qualità 18001/Istruzioni Operative/Documenti in redazione");

Volendo posso anche non valorizzare il cm:title, ma l'errore rimane dicendo
<b>org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: Property 'cm:title' doesn't exist!</b>

La createSession è impostata con il binding a "Browser"


HashMap<String, String> params = new HashMap<String, String>();
      //params.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser");
      params.put(SessionParameter.BROWSER_URL,"http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser");
      params.put(SessionParameter.USER, user);
      params.put(SessionParameter.PASSWORD, password);
      params.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value());
      //params.put(SessionParameter.OBJECT_FACTORY_CLASS,"org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");
      
      try
      {
         SessionFactory factory = SessionFactoryImpl.newInstance();
         setSessionCMIS(factory.getRepositories(params).get(0).createSession());
      }
      catch (Exception e)
      {
         logger.error("Errore nella createSessionCMIS: " + e.hashCode() + ' ' + e.toString());
      }


Imposto il cm:title con l'aspect

HashMap<String, Object> metadati= new HashMap<>();
      
      //Metadati per configurazione tipologia documento
      metadati.put(PropertyIds.OBJECT_TYPE_ID,"D:fe:offerta,P:cm:titled" );
      metadati.put(PropertyIds.NAME,fileName);
      metadati.put("cm:title", "prova");      
      metadati.put("fe:organizzazione","Demo");
      metadati.put("fe:numDoc",60);   


Scusa, ma non ne vengo a capo.

Ad ogni modo non capisco perché la versione del Java influisca sulla velocità di connessione.

blade
Confirmed Champ
Confirmed Champ
Ho capito il problema della lentezza di connessione.

Il mio progetto aveva i riferimenti ai jar di cmis vecchia versione (0.7.0) aggiornandoli alla nuova versione (0.14.0) e aggiornando le varie dipendenze alle nuove release i tempi di connessione sono ritornati quelli normali.