Simplify your Life with Liferay
Ivano Carrara - Note e considerazioni durante la mia attività di Liferay Solutions Architect

lunedì 24 settembre 2012

Simplify your life with Liferay: To manage the database use Liferay not the applicaton server

Con Liferay Portal, è possibile scegliere tra utilizzare un data source gestito direttamente da Liferay Portal oppure un data source gestito dall'application server sul quale è installato Liferay Portal.

In una tipica configurazione di distribuzione di Liferay Portal, anche eventualmente in bundle con qualsiasi application server, questa include per default un datasource gestito direttamente da Liferay Portal.

Liferay consiglia sempre di usare questa seconda configurazione di datasource.

Le note seguenti descrivono come configurare l'accesso al database della piattaforma Liferay Portal. Vengono descritte entrambe le possibilità: utilizzare un data source gestito direttamente da Liferay Portal oppure un data source gestito dall'application server sul quale è installato Liferay Portal.

Utilizzo del connection pool fornito dall'application server

Per utilizzare il connection pool fornito dall'application server, è necessario crearne uno che punti al database scelto.

Nel seguito denomineremo questo connection pool come “LiferayDS”.

Per fare in modo che Liferay usi questo connection pool, è stata aggiunta la seguente direttiva al file “portal-ext.properties”:

jdbc.default.jndi.name=LiferayDS

Il file di configurazione che definisce il connection pool nell'application server (“liferay-ds.xml”) deve essere configurato come segue:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>LiferayDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/lportal?useUnicode=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>password</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
<min-pool-size>5</min-pool-size>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

Utilizzo del connection pool gestito da Liferay Portal

Per utilizzare il connection pool gestito direttamente da Liferay Portal, che è il metodo consigliato, agire esclusivamente sugli elementi di configurazione del file “portal-ext.properties”.

Escludere l'elemento jdbc.default.jndi.name, commentandolo opportunamente:

#jdbc.default.jndi.name=LiferayDS

Così facendo, il portale creerà il data source JDBC basandosi sulle proprietà del file “portal-ext.properties” prefissate con "jdbc.default.".

Ad esempio, queste saranno:

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
 
jdbc.default.username=root
jdbc.default.password=password


Per quanto riguarda la gestione dei pool di connessione, Liferay Portal può utilizzare tre fornitori: C3PO, DBCP, Primrose.

Nel seguito verrà utilizzato il primo.

Aggiungere quindi le seguenti proprietà nel file “portal-ext.properties”:

jdbc.default.liferay.pool.provider=c3po
jdbc.default.acquireIncrement=5
jdbc.default.connectionCustomizerClassName=com.liferay.portal.dao.jdbc.pool.c3p0.PortalConnectionCustomizer


jdbc.default.idleConnectionTestPeriod=60
jdbc.default.maxIdleTime=3600
jdbc.default.maxPoolSize=100
jdbc.default.minPoolSize=10
jdbc.default.numHelperThreads=3


Da notare che la seguente proprietà dovrebbe essere attentamente valutata in base ad una accurata analisi dell'utilizzo in produzione del datasource:

jdbc.default.maxPoolSize=100