dimanche 8 octobre 2017

Développement de Portlet Liferay avec Spring MVC



Portlet Liferay en Spring MVC


Si vous avez déjà développez des portlets avec Liferay, vous saurez probablement qu'un large choix de Frameworks est supporté par Liferay et que vous pouvez les associés avec d'autres outils pour réaliser vos portlets en toute liberté.

Parmis les Frameworks utilisé lors du développement de portlets, je cite : Struts, JSF, Vaadin, Spring.

L'article suivant va vous permettre d'utiliser l'approche Spring MVC dans la création des portlets Liferay.



Créer sous eclipse un projet Plugin Liferay :




Renseigner les informations sur votre projet surtout :

  • Build Type => Maven 

  • Active Profiles => Créer un profil maven pour votre version de Liferay 



  • Choisir le framework à utiliser pour le développement de la portlet => Spring MVC 


Voici à quoi ressemble la structure de votre projet de Portlet Spring MVC :





La version de Spring utilisé par défaut est 3.0.7, nous allons la changer pour une version plus récente 4.3.11 pour éviter des problèmes d'incompatibilité.

--------------------------------
pom.xml :
--------------------------------
<?xml version="1.0"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>HelloWorld</artifactId>
<packaging>war</packaging>
<name>HelloWorld Portlet</name>
<version>1.0.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>com.liferay.maven.plugins</groupId>
<artifactId>liferay-maven-plugin</artifactId>
<version>${liferay.maven.plugin.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>build-css</goal>
</goals>
</execution>
</executions>
<configuration>
<autoDeployDir>${liferay.auto.deploy.dir}</autoDeployDir>
<appServerDeployDir>${liferay.app.server.deploy.dir}</appServerDeployDir>
<appServerLibGlobalDir>${liferay.app.server.lib.global.dir}</appServerLibGlobalDir>
<appServerPortalDir>${liferay.app.server.portal.dir}</appServerPortalDir>
<liferayVersion>${liferay.version}</liferayVersion>
<pluginType>portlet</pluginType>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-bridges</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-taglib</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>util-java</artifactId>
<version>${liferay.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>Liferay-v6.2-(Tomcat-7)</id>
<properties>
<liferay.version>6.2.5</liferay.version>
<liferay.maven.plugin.version>6.2.5</liferay.maven.plugin.version>
<liferay.auto.deploy.dir>D:\Liferay_Labs\Liferay6\6.2-ce-ga6\liferay-portal-tomcat-6.2-ce-ga6-20160112152609836\liferay-portal-6.2-ce-ga6\deploy</liferay.auto.deploy.dir>
<liferay.app.server.deploy.dir>D:\Liferay_Labs\Liferay6\6.2-ce-ga6\liferay-portal-tomcat-6.2-ce-ga6-20160112152609836\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\webapps</liferay.app.server.deploy.dir>
<liferay.app.server.lib.global.dir>D:\Liferay_Labs\Liferay6\6.2-ce-ga6\liferay-portal-tomcat-6.2-ce-ga6-20160112152609836\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\lib\ext</liferay.app.server.lib.global.dir>
<liferay.app.server.portal.dir>D:\Liferay_Labs\Liferay6\6.2-ce-ga6\liferay-portal-tomcat-6.2-ce-ga6-20160112152609836\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\webapps\ROOT</liferay.app.server.portal.dir>
</properties>
</profile>
</profiles>
</project>
--------------------------------

Et voici notre Controller qui va afficher le mode VIEW de notre Portlet :
--------------------------------
PortletViewController.java
--------------------------------
package com.test;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.bind.annotation.RenderMapping;

@Controller
@RequestMapping("VIEW")
public class PortletViewController {

@RenderMapping
public String view(Model model) {
model.addAttribute("message", "Hello World Imil !");
return "HelloWorld/view";
  }

}
--------------------------------
view.jsp :
--------------------------------
<%@ page contentType="text/html" pageEncoding="UTF-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

This is the <b>HelloWorld</b> portlet.<br />

<h3><c:out escapeXml="true" value="${message}" /></h3>
--------------------------------

Nous allons maintenant compiler la Portlet et la déployer dans tomcat :


-----------------
log of deploy :
-----------------
[PortletHotDeployListener:492] 1 portlet for HelloWorld-1.0.0-SNAPSHOT is available for use
-----------------

Et sur l'interface de notre portail, nous allons ajouter la nouvelle portlet "HelloWorld" :



Et comme ça nous venons de créer notre première Portlet Liferay en Spring MVC.

Vous pouvez enrichir votre portlet comme vous faites souvent sur vos projets Spring MVC, et pour la couche métier il faut passer par le Service Builder de Liferay.

Et c'est ce qu'on va voir dans le prochain article : Créer une portlet Spring MVC avec Service Builder comme couche métier.


Mise en place d'un portail intranet avec Liferay 6.2


Installation et Configuration de Liferay



  • Préparation de l'environnement de développement : 
    • Assurer de l'installation de JAVA et MAVEN sur votre PC 
    • Télécharger et déziper eclipse pour Liferay (eclipse avec IDE Liferay) 
    • Télécharger et dézipper Liferay portal (Liferay Community Edition en version 6.2.5) 
  • Installation et Configuration :
Lancer votre eclipse et choisir la perspective Liferay Plugins et suivre les instruction en images pour créer votre votre server tomcat :




Choisir Liferay v6.2 Server (Tomcat 7)




Parcourir le répertoire dans lequel vous avez dézippé votre liferay ce 6.2 et choisir le dossier tomcat :



Lancer tomcat :




Attendre la fin du lancement de tomcat avec la fameuse phrase "Server StartUp" :




Le portail Liferay sera lancé automatiquement sur votre navigation sur l'adresse : http://localhost:8080

L'interface affiche la configuration basique de Liferay :



Pour configurer votre base de données, il faut cliquer sur "Change" sinon vous autorisez la configuration par défaut avec une base de données fourni par Liferay en Hypersonic.

Pour configurer votre propre base de données, vous devez remplir les champs suivants avec les informations d'authentification à votre base de données.

Ici un exemple avec une base de données PostgreSQL :




Cliquer sur "Finish Configuration" pour la création de la base de données et la mise à jour des informations du portail :




Une fois la configuration terminée, un message de succès est affiché avec le chemin du fichier portal-setup-wizard.properties qui contient les informations saisies lors de la configuration (nom du portail, admin, base de données etc) :



Pour accéder au portail, il faut valider les termes d'utilisation et choisir une question pour renforcer la sécurité de votre mot de passe :












Voilà ! Vous avez bien lancer votre portail :)






Rendez-vous dans l'article suivant pour créer votre première Portlet (Spring MVC) en Liferay ..