(English) Liferay 7 CE: How to add support for SQL Server DB

How to add support for Microsoft SQL Server Database
How to add support for Microsoft SQL Server Database

Ci spiace, ma questo articolo è disponibile soltanto in Inglese Americano. Per ragioni di convenienza del visitatore, il contenuto è mostrato sotto nella lingua alternativa. Puoi cliccare sul link per cambiare la lingua attiva.

Those who follow Liferay is aware of the fact that the Community Edition version 7 of Liferay, were eliminated quite a bit of components App Server, Database & Clustering Support. For more detail information you can read the blog post by Bryan Cheung published on April 7, 2016.

  • The Liferay 7 CE GA1 no more support OOTB (Out Of The Box):
  • Application Server: Oracle WebLogic, IBM WebSphere
  • Clustering
  • MultiVM Cache
  • Oracle Database, Microsoft SQL Server, IBM DB2, Sybase DB

The project Liferay Portal SQL Server Support demonstrates how to add support to the Microsoft SQL Server database. Liferay has performed refactoring the code so that it is possible and easy to add support for databases no longer supported OOTB.

Attention update: The driver works with the release GA1, GA2, GA3 and GA4 of the Liferay 7 CE.

This amusarra/liferay-portal-sqlserverdb-support repository has been archived, it is now read-only. Refer to this repository liferay-portal-database-all-in-one-support.

I suggest you read these two recent articles about SQL Server and Liferay:

Make a donation to Antonio Musarra - PayPal.Me

1. Introduction

To extend support to other databases, Liferay has decided to refactoring code to use Java SPI (Service Provider Interface). SPI is the mechanism that allows you to extend/change the behavior within a system without changing the source. It includes interfaces, classes or methods that the user extends or implements in order to obtain a certain functionality.

In short we must:

The following code shows how service providers are loaded via SPI.

To register your service provider, you create a provider configuration file, which is stored in the META-INF/services directory of the service provider’s JAR file. The name of the configuration file is the fully qualified class name of the service provider, in which each component of the name is separated by a period (.), and nested classes are separated by a dollar sign ($).

The provider configuration file contains the fully qualified class names (FQDN) of your service providers, one name per line. The file must be UTF-8 encoded. Additionally, you can include comments in the file by beginning the comment line with the number sign (#).

Our file is called com.liferay.portal.kernel.dao.db.DBFactory and contain the FQDN of the class it.dontesta.labs.liferay.portal.dao.db.SQLServerDBFactory

In the figure below shows the complete class diagram for SQLServerDB.

Class Diagram for SQLServerDB

Class Diagram for SQLServerDB

 

2. Build project

Requirements for build project

  1. Sun/Oracle JDK 1.7
  2. Maven 3.x (for build project) or Gradle 2.x

The driver that adds support for Oracle database is a jar liferay-portal-sqlserverdb-support-${version}.jar which then will be installed in $LIFERAY_HOME/$TOMCAT_HOME/webapps/ROOT/WEB-INF/lib (for apache tomcat). You can download the binary jar liferay-portal-sqlserverdb-support-1.0-SNAPSHOT.jar, by doing so you can avoid doing the build.

To generate the driver for Oracle database just follow the instructions below.

the build process create the jar liferay-portal-sqlserverdb-support-1.0-SNAPSHOT.jar inside the (maven) target directory. If you have a Gradle build system, then you can build jar by the following command

the build process create the jar inside the build/libs directory.

 

3. Install Liferay CE 7 on SQL Server Database

To install Liferay on SQLServer you must have previously configured a schema for Liferay on an SQLServer instance (including SQLServer Express Edition).

I have used an SQLServer Express 2014 installation on Windows 8.1 created on the fly on VirtualBox.

The parameters of my SQLServer instance are:

  • Username: liferayce7
  • Password: liferay12345
  • DB Name: liferayce7
  • FQDN: sqlserverdb.vm.local (IP: 192.168.56.101)
  • TCP/IP Port: 1433
  • Instance ID: SQLEXPRESS

For the installation of Liferay follow the following steps (ref to install Liferay bundle on Liferay Developer Network):

  1. Download Liferay CE 7 GA1 Tomcat Bundle from sourceforge.net
  2. Extract the Liferay bundle (in my case $LIFERAY_HOME is /opt/liferay-portal-7.0-ce-ga1-node-1)
  3. Copy the jar liferay-portal-sqlserverdb-support-${version}.jar in $LIFERAY_HOME/$TOMCAT_HOME/webapps/ROOT/WEB-INF/lib
  4. Download and install Microsoft JDBC driver per SQLServer (v. 4.x) in $LIFERAY_HOME/$TOMCAT_HOME/lib/ext (You may also use the JDBC driver jTDS but not support SQL Server 2014)
  5. Create the portal-ext.properties in $LIFERAY_HOME with the content as the file below. You should modify the JDBC connection parameters to the your db and the value of liferay.home
  6. Launch the Liferay Portal through the command $LIFERAY_HOME/$TOMCAT_HOME/bin/startup.sh
  7. See the Liferay activities via the log file $LIFERAY_HOME/$TOMCAT_HOME/logs/catalina.out

Below you can see the portal-ext.properties

You can see the my complete catalina.out log file and following some screenshots of DB.

Liferay 7 CE on SQL Server DB

Liferay 7 CE on SQL Server DB

 

Liferay 7 CE on SQL Server DB

Liferay 7 CE on SQL Server DB

4. The next step

Likewise you can also add support for other databases. The new challenge is to add the Cluster to Liferay. The operation should be feasible through the OSGi framework.

2 Condivisioni

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...

Cos'è il progetto CIE/CNS Apache Docker - Developers Italia

In questo video https://youtu.be/TcAzn1POhsM introdurrò il progetto CIE/CNS Apache Docker di Developers Italia (https://developers.italia.it/it/cie/#resourcecontent-3) nato circa due anni fa.

L'obiettivo di questo progetto è quello di fornire un template pronto all'uso che realizza un sistema di autenticazione tramite la Smart Card TS-CNS (o CNS) e la CIE (Carta d'Identità Elettronica) basato su Apache HTTP. Ognuno può poi modificare o specializzare questo progetto sulla base delle proprie esigenze Si tratta di un progetto docker per la creazione di un container che implementa un sistema di mutua autenticazione o autenticazione bilaterale SSL/TLS.

Questo meccanismo di autenticazione richiede anche il certificato digitale da parte del client, certificato che in questo caso risiede all'interno della TS-CNS o della CIE. La particolarità del sistema implementato (attraverso questo container) è quella di consentire l'autenticazione tramite:

  • La TS-CNS (Tessera Sanitaria - Carta Nazionale Servizi), rilasciata dalla regione di appartenenza;
  • La CIE (Carta d'Identità Elettronica), rilasciata dal comune di residenza.

Nella versione 2.0.0 il progetto è stato aggiornato per essere uniforme alle linee guida di Bootstrap Italia. A seguire alcune risorse che possono essere utili.

  • Cos’è il progetto CIE/CNS Apache Docker (http://bit.ly/3aJ5Gbl)
  • CIE Carta d'Identità Elettronica (https://developers.italia.it/it/cie/)
  • Carta Nazionale dei Servizi (https://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi)
  • Raspberry Pi – Un esempio di applicazione della TS-CNS (https://bit.ly/3hkJ8Aj)
  • Pubblicare il servizio CIE/CNS Apache Docker su Azure Cloud (http://bit.ly/3aPoq8V)
  • Come accedere al portale VETINFO tramite TS-CNS e Mac OS (http://bit.ly/2VFMKq7)