Liferay Portal CE 7.4: Come configurare Oracle
Database 19c
Nel corso di queste ultime settimane ho ricevuto tramite i miei canali di contatto diverse richieste di supporto per
configurare le immagini Docker di Liferay Portal CE 7.4 con Oracle Database 19c, ho deciso pertanto di scrivere questo
articolo per rispondere a tutti coloro che abbiano questa specifica esigenza.
Per leggere agevolmente questo articolo è richiesta una buona base di conoscenza del portale Liferay dal punto di vista
sistemistico e di Docker (e in genere degli ambienti basati su container e sistemi di virtualizzazione).
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
1. Contesto dell'ambiente
2. Requisiti Software
3. Prima di avviare il container
4. Avvio del container
5. Bonus
6. Conclusioni
7. Risorse
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 2 / 15
1. Contesto dell'ambiente
Onde evitare fraintendimenti è importante definire fin da subito qual è il contesto dell'ambiente che andremo a configurare
ed eseguire.
La configurazione che andremo a creare è orientata a un ambiente di sviluppo/test e gli strumenti software che
utilizzeremo sono essenzialmente quelli indicati a seguire.
Liferay Portal CE 7.4 GA3
Oracle Database 19c
Docker
Il diagramma di figura 1 schematizza l'ambiente target su cui applicheremo la configurazione.
Figura 1 - Contesto dell'ambiente di configurazione ed esecuzione
Ipotizziamo che l'ambiente di configurazione ed esecuzione mostrato dal diagramma di figura 1 possa essere costruito
sulla propria macchina di sviluppo, quest'ultima deve disporre di risorse hardware adeguate a eseguire Liferay Portal e
Oracle Database 19c.
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 3 / 15
Dal diagramma di figura 1, l'oggetto di nostro interesse è esclusivamente la sezione che riguarda Liferay Portal; significa,
che un'istanza di Oracle Database 19c deve essere già configurata e pronta all'uso. La configurazione di un'istanza Oracle
Database 19c è stata già trattata dall'articolo Come usare Oracle Database 19c Pre-Built Developer VM pubblicato
recentemente sul blog Antonio Musarra's Blog.
Visto che abbiamo chiarito il fatto che quello che andremo a costruire è orientanto ad un ambiente di sviluppo/test,
personalmente ho utilizzato sia il mio MacBook Pro i7 16GB sia la mia Workstation da Smart Worker. Consiglio comunque
di consultare quali sono i requisiti hardware dei due prodotti: Liferay Portal e Oracle Database 19c.
2. Requisiti Software
Realizzare quanto mostrato dal diagramma di figura 1 richiede che siano soddisfatti una serie di requisiti.
Sistema Operativo (Host): macOS o Linux/Unix o Windows
Docker Engine versione 19.x o 20.x
Oracle VirtualBox 6.1
Oracle JDBC 1
4.2 Driver
Liferay Database All In One 1.2.1
Come indicato nel capitolo precedente, ho utilizzato i miei due ambienti di sviluppo/test, pertanto ho avuto modo di usare
due sistemi operativi: macOS Monterey (12.1) e Fedora 35 Workstation.
Per quanto concerne Docker Engine, ho utilizzato la versione 20.10.11 (sia su macOS sia su Fedora 35 Workstation),
mentre di Oracle VirtualBox ho usato la versione 6.1.30r148432.
La verifica della versione di Docker Engine e Oracle VirtualBox, è possibile portarla a termine utilizzando i comandi a
seguire.
Console 1 - Verifica della versione di Docker Engine e Oracle VirtualBox
Il requisito di Oracle VirtualBox coincide con la disponibilità di un'istanza Oracle Database 19c. La procedura su come
implementare questo requisito è ampiamente descritta dall'articolo Come usare Oracle Database 19c Pre-Built Developer
VM.
# Get the Docker version info
$ docker version
# Get the Oracle VirtualBox version info
$ VBoxManage --version
1
2
3
4
5
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 4 / 15
Affinché Liferay sia in grado di stabilire una connessione con il database Oracle, è necessario fornire (all'installazione di
Liferay) il driver JDBC da scaricare direttamente dal sito Oracle seguendo il link ojdbc8.jar. Il download del driver richiede
che disponiate di un account sul portale Oracle.
La Community Edition del portale Liferay, OOTB (out-of-the-box) funziona esclusivamente con database (RDBMS 2
) non
commerciali, Oracle database è quindi escluso.
Il progetto Liferay Database All In One aggiunge il supporto ai database commerciali come Oracle a Liferay Portal CE. È
necessario quindi scaricare la versione 1.2.1 dal repository Maven seguendo il link liferay-portal-database-all-in-one-
support-1.2.1.
Nota! In questo momento l'ultima versione disponibile di Liferay Portal CE è la 7.4 GA7. Il motivo per cui in questo articolo
facciamo riferimento alla versione 7.4 GA3 deriva dal fatto che l'ultima versione (1.2.1) del driver Liferay Database All In
One è stata testata con la versione 7.4 GA3 di Liferay Portal.
Una volta soddisfatti tutti i requisiti, possiamo andare avanti con il setup del container di Liferay per fare in modo che
faccia uso del database Oracle.
3. Prima di avviare il container
Dal diagramma di figura 1 è chiaro che faremo uso dell'immagine Docker di Liferay Portal CE 7.4 GA3 per creare il
container di Liferay configurato in modo che si connetta al database Oracle 19c.
Le risorse di riferimento per Liferay Docker sono le seguenti:
Starting with a Docker Image
Using Liferay Docker Images
Liferay DXP Images
Liferay Portal Images
Dobbiamo fare in modo che il container di Liferay che andremo a configurare sia predisposto con il driver JDBC Oracle, il
driver Liferay Database All In One e la configurazione adeguata che consenta a Liferay di stabilire e usare la connessione
verso il database Oracle. Per rendere possibile tutto questo, è indispensabile preparare la struttura di directory e file
mostrata in console 2.
Questa struttura sarà poi montata usando il bind mounts di Docker in fase di creazione del container.
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 5 / 15
(1) Creazione struttura directory
(2) Copia driver JDBC
(3) Copia driver Liferay Database All In One
(4) Creazione environment file per configurazione Liferay
Console 2 - Struttura directory e file per la configurazione del container Liferay
Nota! Dalla versione 7.4 GA3 di Liferay è stato introdotto il meccanismo cosiddetto Shielded Container, cambia quindi la
directory ($LIFERAY_HOME/tomcat/webapps/ROOT/WEB-INF/shielded-container-lib) su cui installare il driver JDBC e il
driver Database All In One. Il README del progetto Database All In One riporta nel dettaglio questa particolare nota
d'installazione (3. Installation notes for Liferay 7.4 GA3).
L'intero contenuto di quanto rappresentato in console 2 può essere creato sulla propria home directory (~) seguendo il
flusso indicato dalla figura a seguire.
Figura 2 - Flusso per il setup della struttura di directory e file
.
├── deploy
├── docker-liferay-env-file.env
└── files
└── tomcat
└── webapps
└── ROOT
└── WEB-INF
└── shielded-container-lib
├── liferay-portal-database-all-in-one-support-1.2.1.jar
└── ojdbc8.jar
1
2
3
4
5
6
7
8
9
10
11
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 6 / 15
A seguire la sequenza di comandi necessari per creare la struttura di directory e file così come indicata in console 2.
Console 3 - Comandi per la creazione della struttura di directory del container Liferay
Utilizzando questa struttura di directory (Scanned Container Folders) e file (Providing Files to the Container) è possibile
configurare Liferay a nostro piacimento.
Il file ~/liferay-74-docker-oracle/docker-liferay-env-file.env contiene in particolare la configurazione
per la connessione verso il database Oracle. Queste informazioni devono essere riviste in base alla propria configurazione
del database Oracle.
Il parametro di environment LIFERAY_JDBC_PERIOD_DEFAULT_PERIOD_CONNECTION_UPPERCASET_IMEOUT che
corrisponde al parametro di configurazione jdbc.default.connectionTimeout è stato impostato con un valore elevato
rispetto allo standard di 30s per evitare errore di Socket Read Timeout sulla connessione Oracle. Questo errore potrebbe
accadere nel caso in cui le risorse hardware siano limitate.
# Step 1 - Creazione struttura directory
$ mkdir ~/liferay-74-docker-oracle
$ mkdir ~/liferay-74-docker-oracle/deploy
$ mkdir ~/liferay-74-docker-oracle/files
$ mkdir -p ~/liferay-74-docker-oracle/files/tomcat/webapps/ROOT/WEB-INF/shielded-container-lib
# Step 2 - Copia driver JDBC (ipotizzando il download su ~/Downloads)
cp ~/Downloads/ojdbc8.jar ~/liferay-74-docker-oracle/files/tomcat/webapps/ROOT/WEB-
INF/shielded-container-lib
# Step 3 - Copia driver Liferay Database All In One (ipotizzando il download su ~/Downloads)
cp ~/Downloads/liferay-portal-database-all-in-one-support-1.2.1.jar ~/liferay-74-docker-
oracle/files/tomcat/webapps/ROOT/WEB-INF/shielded-container-lib
# Step 4 - Creazione environment file per configurazione Liferay
echo
"LIFERAY_JDBC_PERIOD_DEFAULT_PERIOD_DRIVER_UPPERCASEC_LASS_UPPERCASEN_AME=oracle.jdbc.OracleDr
iver
LIFERAY_JDBC_PERIOD_DEFAULT_PERIOD_URL=jdbc:oracle:thin:@192.168.56.5:1521/orcl
LIFERAY_JDBC_PERIOD_DEFAULT_PERIOD_CONNECTION_UPPERCASET_IMEOUT=600000
LIFERAY_JDBC_PERIOD_DEFAULT_PERIOD_USERNAME=lportal
LIFERAY_JDBC_PERIOD_DEFAULT_PERIOD_PASSWORD=lportal
LIFERAY_MODULE_PERIOD_FRAMEWORK_PERIOD_PROPERTIES_PERIOD_DEPENDENCY_PERIOD_MANAGER_PERIOD_SYNC
_PERIOD_TIMEOUT=1800
LIFERAY_MODULE_PERIOD_FRAMEWORK_PERIOD_PROPERTIES_PERIOD_OSGI_PERIOD_CONSOLE=11311" >
~/liferay-74-docker-oracle/docker-liferay-env-file.env
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 7 / 15
Il parametro di environment
LIFERAY_MODULE_PERIOD_FRAMEWORK_PERIOD_PROPERTIES_PERIOD_DEPENDENCY_PERIOD_MANAGER_PERIOD
_SYNC_PERIOD_TIMEOUT che corrisponde al parametro di configurazione
module.framework.properties.dependency.manager.sync.timeout è stato impostato al valore di 1800s rispetto allo
standard di 60s per evitare l'errore WARN [http-nio-8080-exec-1][DependencyManagerSyncImpl:85]
Dependency manager sync timeout after waiting 60s e di conseguenza correre il rischio che il portale non
venga correttamente inizializzato. Per maggiori informazioni fare riferimento a LPS-102056 Upgrade DependencyManger
and enable its concurrent activation e Dependency Manager - Thread Model.
Una volta completata la struttura di directory e file così come mostrata in console 2, siamo pronti per creare ed eseguire il
container di Liferay Portal CE 7.4 configurato per usare il database Oracle.
4. Avvio del container
A questo punto siamo pronti per avviare il container di Liferay Portal CE 7.4 configurato per usare il database Oracle.
Prima di procedere con l'avvio del container accertiamoci però che l'istanza di Oracle Database 19c sia su e che lo schema
dedicato a Liferay sia presente. Possiamo condurre questa verifica eseguendo i comandi indicati in console 4 dal terminale
del sistema host. La dicitura SQL> in console 4 rappresenta il prompt di Oracle SQL Developer Command-Line (SQLcl).
Console 4 - Verifica dell'istanza Oracle Database 19c
# Step 1 - Connessione alla macchina Oracle Database 19c via ssh
# (sostituire l'indirizzo IP con il proprio).
$ ssh oracle@192.168.56.5
# Step 2 - Connessione allo schema lportal via Oracle SQL Developer Command-Line (SQLcl) e
verifica versione di Oracle
[oracle@localhost ~]$ sql /nolog
SQL> connect lportal/lportal
SQL> SELECT BANNER_FULL FROM V$VERSION;
1
2
3
4
5
6
7
8
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 8 / 15
La figura 3 mostra l'output della sequenza dei comandi eseguiti e mostrati in console 4. Adesso che siamo certi che
l'istanza Oracle sia operativa, possiamo procedere con l'avvio del container così come indicato indicato in console 5.
Figura 3 - Test di connessione al database Oracle 19c
Console 5 - Avvio del container Liferay Portal CE 7.4 configurato per Oracle Database
Il parametro --env-file docker-liferay-env-file.env fa in modo che siano impostate le varibili di ambiente
così come definite sul file specificato con lo scopo applicare la configurazione al portale Liferay.
La figura 4 mostra l'output del comando che esegue il pull dell'immagine liferay/portal:7.4.2-ga3 dal repository
di Docker Hub.
# Step 1 - Pull dell'immagine liferay/portal:7.4.2-ga3
$ docker pull liferay/portal:7.4.2-ga3
# Step 2 - Avvio del container Liferay Portal CE 7.4
$ cd ~/liferay-74-docker-oracle
$ docker run --rm -it --name liferay74ga3-oracle19c -p 8080:8080 -p 11311:11311 -v
$(pwd):/mnt/liferay --env-file docker-liferay-env-file.env liferay/portal:7.4.2-ga3
1
2
3
4
5
6
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 9 / 15
Figura 4 - Pull dell'immagine liferay/portal:7.4.2-ga3 da Docker Hub
La figura 5 mostra invece l'avvio del container di Liferay e in particolare l'evidenza che Liferay abbia instaurato la
connessione verso il database Oracle e iniziato a eseguire la creazione di tutti gli oggetti sul database Oracle.
Figura 5 - Avvio del container Liferay Portal CE 7.4 configurato per Oracle Database
Il primo avvio potrebbe durare qualche minuto, al termine il portale dovrebbe essere raggiungibile all'indirizzo
http://localhost:8080 (vedi figura 6) e la Gogo Shell accessibile alla porta 11311 via telnet localhost
11311 .
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 10 / 15
Figura 6 - Accesso al portale Liferay dopo lo start-up via Docker
5. Bonus
Eccoci arrivati al capitolo bonus! In cosa consiste? Presto detto.
SQL DDL per la creazione tablespace e schema per il database del portale Liferay
Archivio zip contenente la struttura di directory e file vista al capitolo 3. Prima di avviare il container
In console 6 sono mostrati tutti i comandi necessari per creare tablespace e schema per il database del portale Liferay. La
dicitura SQL> in console 6 rappresenta il prompt di SQLcl. I comandi indicati in console 6 sono validi se eseguiti
sull'instanza Oracle Database 19c creata attraverso l'immagine Oracle VirtualBox rilasciata da Oracle stessa.
# Step 1 - Connessione alla macchina Oracle Database 19c via ssh
# (sostituire l'indirizzo IP con il proprio).
$ ssh oracle@192.168.56.5
# Step 2 - Connessione allo schema lportal via Oracle SQL Developer Command-Line (SQLcl) e
verifica versione di Oracle
[oracle@localhost ~]$ sql /nolog
1
2
3
4
5
6
7
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 11 / 15
Console 6 - Comandi per la creazione di tablespace e schema per il database del portale Liferay
I parametri utilizzati per la creazione dei tablespace dedicati a Liferay Portal sono in genere adeguati per un ambiente di
sviluppo/test; consiglio comunque di fare riferimento al DBA Oracle quando dovete inizializzare il database di Liferay per gli
ambienti di pre-produzione e produzione.
Seguendo il link liferay-74-docker-oracle dovreste poter scaricare il file zip liferay-74-docker-oracle.zip il cui contenuto è
quello indicato al capitolo 3. Prima di avviare il container. Utilizzando questo zip file vi risparmiate di scaricare il driver
JDBC di Oracle e il Liferay Database All In One. Il checksum md5 dell'archivio è MD5 (liferay-74-docker-
oracle.zip) = 5281ff4582baaab5f9d5fc1f1b84f1b9
# Step 3 - Connessione al database Oracle come sysdba utilizzando l'utente sys e
# password oracle
SQL> connect sys/oracle as sysdba
# Step 4 - Passaggio al container Oracle
SQL> ALTER SESSION SET container = ORCL;
# Step 5 - Creazione tablespace per i dati di Liferay
SQL> CREATE TABLESPACE liferay_data logging DATAFILE
'/u01/app/oracle/oradata/ORCLCDB/liferay_data.dbf' SIZE 64m
autoextend ON NEXT 32m maxsize 4096m blocksize 8k EXTENT management local;
# Step 6 - Creazione tablespace per i dati temporanei
SQL> CREATE TEMPORARY TABLESPACE liferay_temp tempfile
'/u01/app/oracle/oradata/ORCLCDB/liferay_temp.dbf'
SIZE 64m autoextend ON NEXT 32m maxsize 2048m blocksize 8k
EXTENT management local;
# Step 7 - Creazione utente/schema lportal
SQL> CREATE USER lportal IDENTIFIED BY lportal DEFAULT TABLESPACE
liferay_data TEMPORARY TABLESPACE liferay_temp PROFILE
DEFAULT account unlock;
# Step 8 - Assegnazione grant allo user lportal
GRANT CONNECT TO lportal;
GRANT RESOURCE TO lportal;
GRANT UNLIMITED TABLESPACE TO lportal;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 12 / 15
6. Conclusioni
Con questo breve articolo abbiamo visto quale sia il modo di configurare un ambiente di sviluppo/test basato sulle
immagini Docker di Liferay Portal CE, dove quest'ultimo è configurato per avere un database Oracle come RDBMS.
Lo stesso scenario è applicabile anche alle immagini DXP del portale Liferay, con la sola differenza che non è necessario
installare il driver Liferay Database All In One.
7. Risorse
A seguire una serie di risorse che riguardano gli argomenti che sono stati trattati nel corso di questo articolo.
How to setup Docker container Oracle Database 19c for Liferay Development Environment del blog Antonio Musarra's
Blog
How to build a Docker Liferay 7.2 image with the Oracle Database support del blog Antonio Musarra's Blog
Come installare Liferay 7 su JBoss EAP con il supporto per Oracle Database del canale YouTube di Antonio Musarra's
Blog
Come creare immagini Docker Liferay DXP Red Hat JBoss EAP del blog SMC TechBlog
Docker: Sviluppare e rilasciare software tramite container - Libro di Serena Sensini
Pillole di Docker del canale YouTube EmmeCiLab - Informatica e Matematica
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 13 / 15
Antonio Musarra, Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Copertina e impaginazione di Antonio Musarra antonio.musarra@gmail.com
Prima edizione digitale Gennaio 2022 (versione 1.0.0)
Serie: Liferay Deployment Guide (#lfrdeploymentguide)
Promosso da: Antonio Musarra's Blog https://www.dontesta.it
Canali Social
https://twitter.com/antonio_musarra
https://www.linkedin.com/in/amusarra/
https://www.facebook.com/antoniomusarrablog/
https://www.slideshare.net/amusarra
NOTE SUL COPYRIGHT:
Tutti i diritti d’autore e connessi sulla presente opera appartengono all’autore Antonio Musarra. Per volontà dell’autore
quest’opera è rilasciata nei termini della licenza Creative Commons Attribuzione – Non Commerciale – Condividi allo
stesso modo 3.0 Italia (CC BY-NC-SA 3.0 IT) il cui testo integrale è disponibile alla pagina web https://goo.gl/jYtSzA
Tutti i marchi riportati appartengo ai legittimi proprietari; marchi di terzi, nomi di prodotti, nomi commerciali, nomi
corporativi e società citati possono essere marchi di proprietà dei rispettivi titolari o marchi registrati d’altre società e sono
stati utilizzati a puro scopo esplicativo ed a beneficio del possessore, senza alcun fine di violazione dei diritti di copyright
vigenti.
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 14 / 15
1. In informatica JDBC (Java DataBase Connectivity), è un connettore (driver) per database che consente l'accesso e la gestione della persistenza dei dati sulle basi
di dati da qualsiasi programma scritto con il linguaggio di programmazione Java, indipendentemente dal tipo di DBMS utilizzato. È costituito da un'API object
oriented orientata ai database relazionali, raggruppata nel package java.sql, che serve ai client per connettersi a un database fornendo i metodi per interrogare e
modificare i dati (fonte Wikipedia ) ↩
2. Il termine relational database management system (RDBMS, sistema per la gestione di basi di dati relazionali) indica un database management system basato
sul modello relazionale, introdotto da Edgar F. Codd. Oltre a questi, anche se meno diffusi a livello commerciale, esistono sistemi di gestione di basi di dati che
implementano modelli dei dati alternativi a quello relazionale: gerarchico, reticolare e a oggetti (fonte Wikipedia ). ↩
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
No. 15 / 15