Alfresco Database

Database Configuration

Il sorgente di questa pagina è questo.
Non è completo perchè studio solo i database che mi interessano al momento.

Introduzione alla configurazione del database

Ho cominciato ad usare alfresco seriamente a partire dalla versione 3.4.d (3.4.4 denominazione enterprise.) sia in questa che nella versione successiva 3.4.e che è l'ultima versione della major 3, per l'accesso alla base di dati è usata ibatis. Nella pagina del wiki di riferimento c'è hybernate ma è stato sostituito.

Oracle su comunity ediction 3.4.d / 3.4.e

Nella pagina c'è scritto che la versione comunity funziona su mysql e postgres quella enterprise di alfresco su tutti gli altri db tra cui oracle.
Dato che la comunity dovrebbe essere identica alla versione enterprise mi sono adoperato con l'aiuto del mio collega Gaetano a fare in modo di superare questo limite. Siamo riusciti a farla funzionare sulle versioni 3.4.d / 3.4.e sotto centos 5.7, oracle 10.2 xe in ubuntu server.

Per riuscirci si devono operare tre tipi di intervento:

  1. sostituzione e aggiunta di librerie
  2. aggiunta degli scrip di creazione e update della base di dati
  3. modifica del file properties

Materiale potete scaricarlo da questa cartella online

1 - librerie

Dentro tomcat lib basta aggiungere la ojdbc14.jar conviene prenderla dallo stesso db che si deve utilizzare.

tomcat/webapps/alfresco/WEB-INF/_lib/ibatis-2.3.4.726-patched.jar

bisogna sostituirla con la stessa versione senza patched, perchè è in quel punto che i programmatori di alfresco hanno inserito il blocco per le basi di dati che non si dovrebbero utilizzare. In giro dopo un po' di ricerche ho trovato la versione giusta la metto nella cartella online.

2 - script per base di dati

Ho copiato gli script dalla versione enterprise perchè nella comunity c'erano solo quelli per postgres e mysql

find . -name *Oracle*
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/ibatis/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/upgrade/2.2/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/upgrade/3.4/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/upgrade/3.2/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/upgrade/3.3/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/upgrade/3.1/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect
./tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/create/org.alfresco.repo.domain.hibernate.dialect.AlfrescoOracle9Dialect

Ovviamente per fare le copie devo usare un alfresco già scompattato e non in formato war.
Ho messo gli script dentro la cartella online se non si vuole scaricare tutto nella versione enterprise.

3 - file properties

Il file di properties si trova

./tomcat/shared/classes/alfresco-global.properties

Perchè così vi si può accedere da tutte le app deployate e dovrebbe sovrascrivere al caricamento quello dentro
./webapps/alfresco/WEB-INF/classes/alfresco/module/test/alfresco-global.properties

Ecco l'esempio classico riportato dal wiki

db.name=alfresco
db.username=alfresco
db.password=alfresco
db.host=localhost
db.port=1521
db.driver=oracle.jdbc.OracleDriver
db.url=jdbc:oracle:thin:@{db.host}:${db.port}:<database sid>
db.pool.validate.query=SELECT 1 FROM DUAL

Nella mia versione ho avuto difficoltà usando la configurazione descritta perchè non leggeva le singole property mettendole nella url, dando una generica eccezione di connessione.
Per questo motivo ho messo tutto in una riga e si è connesso.

db.url=jdbc:oracle:thin:alfresco/alfresco@192.168.10.55:1521:orcl

Se si hanno istanze multiple di Alfresco sullo stesso oracle server , bisogna forzare le query del database per i metadata a puntare allo schema che ogni utente del database sta usando. Bisogna aggiungere quest'altra proprietà. Almeno così c'è scritto sul wiki, però non l'ho provato ancora

hibernate.default_schema=ALFRESCO

Importante dopo aver sistemato tutto rimuovere il .war dalla directory webappa altrimenti c'è il rischio che venga rideployato quello prima o poi e quindi le modifiche fatte e la connessione al db vadano perdute.

Oracle su comunity ediction 4.0

Al momento di quest'ultimo aggiornamento della pagina wiki 1 dicembre 2011 la versione enterprise della 4 non è ancora uscita ho analizzato la versione comunity 4.0.b e ho notato che

nella 3 c'erano queste librerie

find . -name '*batis*'
./mybatis-3.0.1.jar
./ibatis-2.3.4.726-patched.jar

Nella nuova

find . -name '*batis*'
./mybatis-spring-1.0.1.jar
./mybatis-3.0.4-patched.jar

Perchè come si vede dal sito di apache di ibatis la major releas 3 è diventata mybatis. Quindi ho scaricato dal sito di ibatis la stessa versione senza patched ma dato che non ho gli script aggiornati di create e update non può ancora funzionare.
Quando uscirà l'enterprise aggiornerò questa pagina.

Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License