Appeler des API Spring Boot depuis Liferay – Guide d’intégration pas à pas

 Dans les applications d’entreprise, il est très courant d’intégrer Liferay Portal avec des microservices Spring Boot.

Un cas d’usage typique est lorsqu’un portlet ou un service Liferay doit appeler une API REST externe développée avec Spring Boot.

Dans ce guide, vous allez apprendre :

  • comment appeler des API Spring Boot depuis Liferay

  • les principales approches d’intégration

  • des exemples de code étape par étape

  • les bonnes pratiques pour la production


🔍 Pourquoi intégrer Liferay avec Spring Boot ?

Liferay est une plateforme puissante de portail et de gestion de contenu, tandis que Spring Boot est idéal pour créer des microservices évolutifs.

Cas d’usage fréquents :

  • interface Liferay appelant un backend Spring Boot

  • workflows Liferay invoquant des services métiers

  • APIs headless consommées par Liferay

  • intégration avec des systèmes externes

Cette architecture permet de :

  • garder Liferay léger

  • isoler la logique métier

  • faire évoluer les services indépendamment


🧭 Vue d’ensemble de l’architecture


📊 Diagramme 1 : Liferay appelant une API Spring Boot



🚀 Approche 1 : Appeler une API Spring Boot depuis du code Java Liferay

C’est l’approche la plus courante et recommandée.


Étape 1 : Ajouter un client HTTP dans Liferay

Si vous utilisez Liferay DXP 7.2+, vous pouvez utiliser :

import com.liferay.portal.kernel.util.HttpUtil;

Ou Apache HttpClient (dans un module OSGi) :

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> </dependency>

Étape 2 : Appeler l’API Spring Boot

String apiUrl = "http://localhost:8080/api/customers"; Http.Options options = new Http.Options(); options.setLocation(apiUrl); options.setMethod(Http.Method.GET); String response = HttpUtil.URLtoString(options); System.out.println("Réponse : " + response);

Étape 3 : Parser la réponse JSON

JSONObject json = JSONFactoryUtil.createJSONObject(response); JSONArray clients = json.getJSONArray("data"); for (int i = 0; i < clients.length(); i++) { JSONObject obj = clients.getJSONObject(i); System.out.println(obj.getString("name")); }

🚀 Approche 2 : Appeler une API Spring Boot depuis Service Builder

À utiliser lorsque :

  • l’appel fait partie d’un service backend

  • plusieurs portlets réutilisent ce code


public String recupererClients() { String apiUrl = "http://localhost:8080/api/customers"; Http.Options options = new Http.Options(); options.setLocation(apiUrl); options.setMethod(Http.Method.GET); try { return HttpUtil.URLtoString(options); } catch (Exception e) { _log.error("Erreur lors de l’appel de l’API Spring Boot", e); return null; } }

🚀 Approche 3 : Appeler une API Spring Boot depuis JavaScript (AJAX)

Si Spring Boot expose des APIs avec CORS activé, le frontend Liferay peut les appeler directement.


fetch("http://localhost:8080/api/customers") .then(response => response.json()) .then(data => console.log(data)) .catch(err => console.error(err));

⚠️ À utiliser uniquement pour :

  • APIs publiques

  • APIs sécurisées par token

  • logique non sensible


🔐 Sécurité : points importants


1️⃣ Configuration CORS (Spring Boot)

@CrossOrigin(origins = "http://localhost:8080") @RestController public class CustomerController { }

2️⃣ Authentification par token

options.addHeader("Authorization", "Bearer " + token);

3️⃣ HTTPS en production

Ne jamais exposer des APIs Spring Boot en HTTP simple.


🧪 Gestion des erreurs et timeouts

Toujours gérer :

  • timeouts

  • réponses 4xx / 5xx

  • erreurs réseau


options.setTimeout(5000); try { String response = HttpUtil.URLtoString(options); } catch (Exception e) { _log.error("Échec de l’appel API", e); }

🚨 Problèmes fréquents et corrections


❌ Erreur CORS

Correction : activer CORS dans Spring Boot.


❌ Timeout

Correction : augmenter le délai d’attente.


❌ Erreur JSON

Correction : valider la réponse API.


❌ 401 Non autorisé

Correction : ajouter l’en-tête Authorization.


✅ Bonnes pratiques pour la production

✔ Utiliser Service Builder ou des services OSGi
✔ Ajouter des retries et timeouts
✔ Utiliser HTTPS
✔ Sécuriser avec OAuth2
✔ Logger les appels API
✔ Gérer les échecs proprement
✔ Mettre en cache les réponses


📌 Résumé rapide (TL;DR)

Objectif : Appeler une API Spring Boot depuis Liferay
Options :

  1. Appel Java backend (recommandé)

  2. Intégration Service Builder

  3. Appel frontend JavaScript

Conseils prod :
Sécuriser les APIs, gérer les erreurs, ajouter des timeouts.


❓ Questions fréquentes (FAQ)


❓ Liferay peut-il appeler directement des APIs Spring Boot ?

Oui, via Java backend ou AJAX frontend.


❓ Backend ou frontend : lequel est préférable ?

Le backend est plus sûr et recommandé.


❓ Comment sécuriser les APIs Spring Boot pour Liferay ?

Avec OAuth2 ou une authentification par token.


❓ Peut-on appeler des APIs Spring Boot depuis un workflow Liferay ?

Oui, via des services Java.


🔗 Articles connexes

  • Service Builder Liferay expliqué

  • Développement OSGi Liferay

  • Bonnes pratiques REST Spring Boot


👩‍💻 Conseil final

Gardez toujours la logique métier dans Spring Boot
et la présentation dans Liferay.

C’est plus propre, plus scalable et plus sécurisé.


💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM), DMN/Drools.

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     


Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup