Aller au contenu
  • Société
    • Qui sommes-nous
    • Nos valeurs
    • Nos partenaires
    • Entreprise citoyenne
    • Régions
  • Services
    • Expertise
    • Formation
    • Développement
    • Migration
    • Infogérance
  • Join the Team
  • Actualités
  • Blog
    • Blog easyteam.fr
    • Blog Cloud Natives
  • Formations
  • Rugb’Easyteam
  • Contact
Menu
  • Société
    • Qui sommes-nous
    • Nos valeurs
    • Nos partenaires
    • Entreprise citoyenne
    • Régions
  • Services
    • Expertise
    • Formation
    • Développement
    • Migration
    • Infogérance
  • Join the Team
  • Actualités
  • Blog
    • Blog easyteam.fr
    • Blog Cloud Natives
  • Formations
  • Rugb’Easyteam
  • Contact
Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter

Abonnez-vous maintenant et nous vous tiendrons au courant.
Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment.

Bienvenue sur le Blog d'EASYTEAM (ex ArKZoYd)

  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
Menu
  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • le 24/01/2018
  • Olivier Docquois
  • Java, JDeveloper & ADF, SOA & Urbanisation

JCA Adapter: quand la base prend le bus

Partager sur linkedin
LinkedIn
Partager sur twitter
Twitter
Partager sur facebook
Facebook

Cet article présente l’intégration de deux produits d’un de nos partenaires préférés : la base de données et le bus de service.
Nous allons montrer comment le Bus de Services (OSB – Oracle Service Bus) interagit avec le base de données (Oracle Database).

  • Ce premier article montre comment l’OSB peut réagir à un événement de la base : inbound message.
  • Un second article montrera comment déclencher une opération sur la base à partir de l’osb : outbound message.

Ces deux techniques s’appuient sur le monde Java et répondent à plusieurs problématiques comme l’accès aux systèmes d’information d’entreprise (eis), les transactions (XA), etc.
Nous nous intéressons ici au connecteur de type base de données, implémenté chez Oracle sous le nom : Oracle Database Adapter (Oracle JCA Adapter for Database).

Prérequis :

  • Oracle Database
  • Oracle SQLDeveloper
  • Oracle JDeveloper
  • Eclipse avec Oracle Enterprise for Eclipse
  • Oracle Service Bus

Etape 1 – Préparer la base

Utilisez SQLDeveloper (à défaut SQL+ ou votre IDE habituel) et soumettez le script (ddl) ci-dessous pour créer les objets nécessaires à l’exercice.
Création du user :

create user demo
identified by demo
default tablespace users
temporary tablespace temp;
grant connect, resource to demo;

Création de la table :

connect demo/demo
create table jcademo
  (value_to_change varchar2(32), mark_as_read number);

Préparez votre jeu de données : insertion et de validation (dml)

insert into jcademo values ('A',0);
commit;

 

Etape 2 – Créer l’adapteur

Utilisez JDeveloper pour développer le connecteur JCA.

2.1 Créez un projet de type « Empty Composite ».

 

2.2 Faite glisser un Database Adapter dans le SCA composite sur la partie gauche du composite.xml.

La partie gauche permettra d’exploiter le composant en message inbound.
exposedservices
Suivez ensuite le wizard JDeveloper :
acws1o4
 

2.3 Choisissez le nom de votre connecteur.
acws2o4

 

2.4 Définissez une connexion vers le schéma de base défini précédemment.

Cette connexion sert uniquement lors de la conception.
(par exemple : jdbc:oracle:thin:@localhost:1521:xe, user de connexion : demo/demo)
 

2.5 Importez la table demo.

Il existe plusieurs types d’opérations :

  • Delete the Row(s) that were Read
  • Update a Field in the [Table_Name] Table (Logical Delete)
  • Update a Sequencing Table
  • Update an External Sequencing Table on a Different Database
  • Control Table Strategy
  • Update a Sequencing File

2.5.1 Dans notre exemple, nous utilisons la suppression logique de donnée (Logical delete aussi appelé « data polling ») par opposition à la suppression physique de données (physical delete) :

“Poll for New or Changed Records in a Table”.
acws4o4

2.5.2 Sélectionnez la table précédemment créée avec SQLDeveloper.
acws5o13

 

2.5.3 Choisissez une clef primaire logique.

Il ne s’agit pas d’une primary key de définition de table.
acws6o13
 

2.5.4 Cette exemple est basée sur une table unique : vous pouvez passer l’étape « Relationship ».

 

2.5.5 N’excluez pas de colonne de la requête.
acws8o13

2.5.6 Nous allons mettre à jour la colonne « MARK_AS_READ » pour signifier la prise en compte de la modification de donnée par l’osb (logical delete).
acws9o13

Choisissez deux valeurs représentatives :

  • 0: pas de supression,
  • 1: supression.

 

2.5.7 Polling

Passez Cette l’étape de configuration du polling ; non nécessaire pour notre exemple.

 

2.5.8 Définissions vos critères de SELECT
acws12o13

 

2.5.9 Advanced Options
acws13o13

2.5.10 Finish

Good job!
exposedservices
 

Etape 3 – Créer le service et le lier au message inbound

Cette fois-ci, utilisez Eclipse avec avec Oracle Enterprise Pack for Eclipse pour intégrer le connecteur dans l’OSB.

3.1 Ouvrez Eclipse et créez un nouveau projet de type Oracle Service Bus Configuration Project.

 

3.2 Créez un projet Oracle Service Bus Project.
oepe1

 

3.3 Importez le connecteur créé précédemment.

3.3.1 Import >> Import.

3.3.2 Choisissez File System et recherchez le fichier jca créé avec JDeveloper.
oepe4

3.3.3 Prenez les composants :

  • xml,
  • xsd,
  • wsdl,
  • jca.

3.4 Corrigez la description de service.

Vous constatez que le wsdl est en erreur.
Vous devez modifier le source pour faire pointer vers la bonne xsd.

3.5 Créez le service.

Vos efforts seront bientôt récompensés !

3.5.1 Cliquez droit sur le jca : Oracle Service Bus puis puis Generate Service.

3.5.2 Vous avez votre Business Service que vous pouvez utiliser tout à fait classiquement dans OEPE !

 

Etape 4 – Testez votre composant

Vous pouvez maintenant mettre à jour votre ligne :

update jcademo set value_to_change = 'B'

Vérifiez que le flag est mis à jour

select * from jcademo
VALUE_TO_CHANGE        MARK_AS_READ
---------------------- ---------------
B                      1

Voilà : l’information que vous venez de mettre à jour en base de donnée a déclenché un événement sur le Bus ‘Mark as read ».
Cet exemple est basé sur la version 11g des produits.
La technologie de la version 12 est changée et rend l’opération beaucoup plus simple.
 

Olivier Docquois
Olivier Docquois
Voir tous ses articles
Partager sur linkedin
LinkedIn
Partager sur twitter
Twitter
Partager sur facebook
Facebook

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Les derniers articles

  • La fin d’OVM – L’essor d’OLVM 18/01/2021
  • Azure Netapp Files 11/01/2021
  • AWS – Choisir entre les services de messagerie pour les applications Serverless AWS 04/01/2021
  • RMAN : Dupliquer une base avec Restore database en 12c 28/12/2020
  • Run kafkaConnect with docker image 21/12/2020

Les derniers commentaires

  • Laurent GALLET dans Chiffrement du flux SQL*NET
  • SylvainF dans Oracle et VMware : risques, enjeux et solutions
  • Développer avec Oracle Functions - EASYTEAM dans Oracle Cloud Infrastructure Container Engine for Kubernetes
  • Younes dans Les bonnes raisons d’utiliser un CDN (réseau de diffusion de contenus / Content Delivery Network)
  • Bruno BOTTREAU dans Oracle et VMware : risques, enjeux et solutions
Espace Membres
Mot de passe perdu ?
EASYTEAM

Tour Nova, 71 Boulevard National,
92250 La Garenne-Colombes
Tél. 0800 40 60 40
contact@easyteam.fr

Facebook
Linkedin
Twitter
Navigation
  • Accueil
  • Qui sommes-nous
  • Entreprise citoyenne
  • Nos valeurs
  • Régions
  • Partenaires
  • Contact
  • Support
Menu
  • Accueil
  • Qui sommes-nous
  • Entreprise citoyenne
  • Nos valeurs
  • Régions
  • Partenaires
  • Contact
  • Support
Services
  • Développement
  • Migration
  • Infogérance
  • Expertise
  • Formation
Menu
  • Développement
  • Migration
  • Infogérance
  • Expertise
  • Formation
Blog
  • Cloud
  • Infrastructures
  • Data
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • Applications
Menu
  • Cloud
  • Infrastructures
  • Data
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • Applications
Copyright 2018 - EASYTEAM, Tous droits réservés
Mentions légales
Politique de confidentialité​