Oracle SOA 12c : Intégration continue (Part 2: Service Bus)

Dans un précédent billet, nous avons vu comment utiliser Maven et le plugin Oracle SOA Suite 12c pour automatiser la compilation, le packaging et le déploiement des composites SOA :
http://arkzoyd.wpengine.com/2015/01/11/oracle-soa-12c-integration-continue/
L’objectif étant de mettre en place une intégration continue pour nos projets SOA, il convient que celle-ci puisse couvrir tous les types de développements possibles au sein d’Oracle SOA Suite 12c.
C’est dans ce sens que ce nouveau billet présente comment étendre le mécanisme à vos développements Service Bus.

Pour ceci nous réalisons les actions suivantes :

  • Lancement JDeveloper 12.1.3 (composite editor plugin)
  • Création d’une application de type Service Bus nommée SBApplication
  • Création d’un projet de type Service Bus nommé SBProject

 
L’arborescence visible dans JDeveloper est la suivante :
soa12cic20
De manière analogue à la partie SOA, on remarque immédiatement :

  • Un fichier pom.xml a automatiquement été créé au niveau de l’application (cf. « Application Resources »)
  • Un fichier pom.xml a automatiquement été créé au niveau des ressources système (idem)
  • Un fichier pom.xml a automatiquement été créé au niveau du projet

 
POM au niveau application :
soa12cic21
Même remarque que pour la partie SOA : ce fichier a pour vocation de faire de l’application Service Bus un module Maven parent regroupant autant de modules enfants que de projets Service Bus. Il permet ainsi de compiler, packager et déployer une application Service Bus en une seule opération.
 
POM au niveau ressources système :
soa12cic22
Ce POM représente un module Service Bus contenant les ressources systèmes de l’application (proxy server, etc.).
 
POM au niveau projet :
soa12cic23
Comme pour la partie SOA, ce fichier paramètre le build Maven d’un projet Service Bus :

  • Indique l’utilisation du plugin Maven pour Service Bus fourni par Oracle (oracle-servicebus-plugin) au travers du POM parent (sbar-project-common)
  • Précise la configuration du plugin Maven pour Service Bus

 
Nous allons désormais voir comment utiliser ces fichiers avec Maven. A noter que celui-ci et le plugin Oracle ont été installés lors de la partie SOA (cf. billet précédent).
 
Check Maven:
mvn -v
soa12cic24
 
Check plugin Oracle pour Service Bus (différent du plugin pour les composites SOA):
mvn help:describe -Dplugin=com.oracle.servicebus.plugin:oracle-servicebus-plugin -Ddetail
soa12cic25
 
Modification des POM dans JDeveloper:
Pour simplifier les opérations suivantes, nous modifions la version dans les POM d’application et de projets (1.0-SNAPSHOT => 1.0):
POM application:
soa12cic26
POM ressources système :
soa12cic27
POM projet :
soa12cic28
 
Nous sommes désormais prêts à packager puis déployer notre application Service Bus.
 
Package (pas de step compile pour service bus) :
mvn package -DoracleHome=D:\oracle\fmw12c
soa12cic29
L’archive Service Bus du projet SBProject résultante se trouve alors à l’emplacement suivant :
SBApplication\SBProject\.data\maven\sbconfig.sbar
L’archive Service Bus contenant les ressources système (au niveau application dans JDeveloper) se trouve à l’emplacement suivant :
SBApplication\System\.data\maven\sbconfig.sbar
 
Deploy :
mvn pre-integration-test -DoracleHome=D:\oracle\fmw12c -DoracleServerUrl=http://devsrvsoa001.nexity.net:7001 -DoracleUsername=weblogic -DoraclePassword=WebLogic12
soa12cic30
Pour les déploiements Service Bus, le serveur d’administration doit-être utilisé (contrairement à la partie SOA visant un serveur managé).
 
Utilisation du POM parent pour centraliser les propriétés utilisées:
Les POM de projet dépendent d’un POM parent présent à l’emplacement suivant:
%M2_REPO%\com\oracle\servicebus\sbar-project-common\12.1.3-0-0\sbar-project-common-12.1.3-0-0.pom (pour les projets)
Les POM de ressources système dépendent d’un POM parent présent à l’emplacement suivant:
%M2_REPO%\com\oracle\servicebus\sbar-system-common\12.1.3-0-0\sbar-system-common-12.1.3-0-0.pom (pour les projets)
Dans les 2 cas, vous pouvez renseigner la configuration suivante (de manière analogue à la partie SOA, cf. billet précédent) :
soa12cic31
Les lignes de commande à passer devenant:
mvn package
mvn pre-integration-test
 
Conclusion:
L’automatisation du packaging et du déploiement des projets Service Bus repose sur les mêmes mécanismes que pour les composites SOA. L’utilisation de Maven permet de simplifier et de standardiser ces opérations.
Plus d’info :
https://docs.oracle.com/middleware/1213/core/MAVEN/osb_maven_project.htm
 
Nous verrons dans un prochain billet comment lier la partie Service Bus et la partie SOA au sein d’un même build Maven.