Oracle ESB, deployment en beheer
Oktober 2006 – Oracle heeft kortgeleden de definitieve versie van Oracle ESB beschikbaar gesteld. Eindelijk is de productie versie er. Ten opzichte van de developer preview versie zijn er geen merkbare verschillen. In ons vorige Whitebook hebben we een begin gemaakt met het bouwen van een eenvoudig integratie scenario. In dit Whitebook gaan we iets meer vertellen over hoe we deze gebouwde functionaliteit kunnen deployen, testen en beheren.
Testcase
In deze serie Whitebooks wordt steeds de volgende testcase uitgewerkt:

Figuur 1, testcase scenario
Auto’s komen binnen bij auto-importeur Grote Auto BV. Zodra er een nieuwe auto binnenkomt worden de gegevens van de auto in een computersysteem ingeboekt en worden deze (in XML formaat) overgestuurd naar geïnteresseerde auto bedrijven. In deze testcase is dit autobedrijf “Het Pientere Pookje”. “Het Pientere Pookje” is in ons voorbeeld alleen geïnteresseerd in het automerk Volkswagen.
De gegevens van nieuwe auto’s van “Grote auto BV” die zijn ingevoerd in het voorraadsysteem worden klaargezet in XML formaat in een map op een lokale machine. Zodra deze bestanden in de map zijn geplaatst worden ze opgepikt door Oracle ESB, omgezet naar het formaat van “Het Pientere Pookje” en daar afgeleverd in een Oracle database. Deze gegevens worden weer gebruikt door het bestellingsysteem van “Het Pientere Pookje”.
Om te zien hoe dit ESB scenario moet worden gebouwd, verwijzen wij u graag naar vorige deel van deze Whitebook serie.
Deployment
Om de gebouwde functionaliteit daadwerkelijk in actie te zien moet er eerst een connectie worden gedefinieerd met de ESB server. In Oracle JDeveloper gebeurt dit door middel van twee stappen, namelijk het definiëren van een connectie naar de Oracle Application Server (AS) component van de SOA Suite, en het definiëren van de connectie naar de integratiecomponenten die standaard op de AS zijn geïnstalleerd. Dit gebeurd door in JDeveloper Studio het Connections tabblad te kiezen. Dit is dezelfde plek waar je ook bijvoorbeeld de database connecties definieert. Het scherm ziet er als volgt uit:

Figuur 2, Connections tabblad
Maak als eerste een connectie aan naar de Application Server. Dit kan door met de rechter muisknop op Application Server te klikken, en de optie “New Application Server Connection…” te kiezen.

Figuur 3, aanmaken connectie
Maak in de wizard vervolgens de connectie aan naar de applicatieserver. Test deze connectie als laatste stap in de wizard. De connectie is succesvol aangemaakt als de connectietest succesvol is verlopen:

Figuur 4, de application server connection wizard
Vervolgens moet de connectie naar de “Integration Server” worden aangemaakt. Deze maakt gebruik van de connectie naar de Application Server die we hiervoor hebben aangemaakt. Om de connectie naar de Integration Server aan te maken, dient er met de rechter muisknop op Integration Server te worden geklikt. Kies vervolgens “New Integration Server Connection…”. Doorloop weer de wizard, en test of de connectie werkt in de laatste stap. In de tweede stap van de wizard kan nu gekozen worden voor de Application Server connectie die hiervoor is aangemaakt:

Figuur 5, De integration server connection wizard
In de figuur is te zien dat onze Application Server connectie de naam local_IAS heeft.
Nadat de connecties zijn aangemaakt, kunnen we ons integratieproces deployen op de Integration Server. Dit doen we door terug te gaan naar het Applications tabblad, en met de rechtermuisknop op de naam van het ESB project te klikken. Kies vervolgens “Register with ESB…”, en dan de naam van de connectie naar de Integration Server die is aangemaakt:

Figuur 6, registreren van de ESB applicatie met de ESB server
In ons geval heet de Integration Server connectie local_ESB.
Er verschijnt een nieuw venster, met daarin het resultaat van de deploy actie:

Figuur 7, resultaat van het deployen
Klik op OK om het venster te sluiten. Ons integratieproces is nu actief op de ESB server.
Testen
Om ons proces te testen, plaatsen we een testbericht in de directory die wordt ‘bewaakt’ door de file adapter. Als eerste plaatsen we een testbericht met de gegevens van een Skoda Octavia om verwerkt te worden:

Figuur 8, Voorbeeld XML bericht
Nadat het bestand in de directory is geplaatst, zal het na enige tijd verdwijnen. Het bestand is dan verwerkt door het ESB proces. Om te bekijken wat er met het bericht is gebeurd, moeten we inloggen op de ESB Control web pagina. Deze is te bereiken via de url: http://<servernaam>:<poort>/esb/. Standaard is dit: http://localhost:8888/esb/ indien de SOA Suite lokaal is geïnstalleerd. Na het inloggen verschijnt het volgende scherm:

Figuur 9, BPEL Console services scherm
In het scherm is een grafisch overzicht te zien van het gedeployde integratie proces. Voor ieder bericht dat wordt verwerkt, wordt een nieuwe instantie (Engels: instance) aangemaakt van ons proces. Deze instances kunnen worden bekeken door boven in het scherm op het “instances”
icoon te klikken:
Het instances scherm verschijnt:

Figuur 10, ESB Concole instances scherm
Aan de linker kant van het scherm zijn drie hoofdfuncties te onderscheiden, namelijk “Manage”, “Search” en “Instances”. Met de “Manage” functie kan de historie van de berichten, ofwel instances, worden verwijderd. Met de “Search” functie kan er op specifieke kenmerken van instances worden gezocht. Vooral op productiesystemen geeft dit erg veel inzicht in algemene stromen en gebruik en specifieke problemen. In het “Search” gedeelte kunnen zoekcriteria worden ingegeven. De functie wordt steeds uitgevoerd door op het Go icoon te klikken. Standaard staan er geen criteria ingevuld, en door op het Go icoon in de “Search” functie te klikken, worden onder “Instances” alle verwerkte berichten getoond.
Klik nu op de gevonden instance om de details van de verwerking te bekijken:

Figuur 11, ESB Console instances scherm met gegevens over de verwerking van het Skoda XML bericht
Er verschijnt wederom een grafische representatie van het integratie proces. Door middel van de groene kleur van de adapters en services wordt aangegeven of het bericht succesvol door de betreffende component is verwerkt. De groene lijn geeft de weg van het bericht weer door het proces heen.
Aangezien we een bericht met gegevens van de Skoda Octavia in de directory hadden geplaatst, zien we dat het bericht ook inderdaad maar tot het filter in de routing service komt. Het filter is in de figuur zichtbaar als een trechtertje (zie ook ons vorige Whitebook). Het filter laat namelijk alleen berichten van het merk Volkswagen door.
We passen nu het XML test bericht aan, waarbij we de merknaam vervangen van Skoda naar Volkswagen, en het type van Octavia naar Golf. Vervolgens plaatsen we het bestand weer in de ‘bewaakte’ directory. Na enkele seconden zal het bericht weer verdwijnen.
Klik op het Go icoon van de “Search” functie, en kies de instance met de meest recente “Initiating Time”. De “Initiating Time” is de tijd waarop de ESB server is begonnen met de verwerking van het bericht. We willen het meest recent verwerkte bericht zien, dus kiezen we de instance met de meest recente “Initiating Time”. Het volgende scherm verschijnt:

Figuur 12, ESB Console instances scherm met gegevens over de verwerking van het Volkswagen XML bericht
We zien nu de groene lijn helemaal doorlopen tot aan de database adapter van het Pientere Pookje. Het filter heeft daadwerkelijk het bericht met de Volkswagen gegevens doorgelaten, getransformeerd naar het bestandsformaat van het Pientere Pookje, en vervolgens in de AUTOS tabel in de database toegevoegd.
In het instancescherm is alleen de status van de flow door het proces te zien, echter niet de daadwerkelijke informatie die is verwerkt. Op deze manier is het erg lastig om naderhand nog te kunnen zien welke gegevens er door de instance zijn verwerkt. Om meer inzicht te krijgen in de gegevens die door de adapters en services worden verwerkt, kunnen er zogenaamde “Trackable Fields” worden toegevoegd. Deze traceerbare velden zijn delen van het bericht die kunnen worden aangemerkt als logging informatie. Hierop kan bijvoorbeeld in het instances scherm worden gezocht met de “Search” functie. Ook kunnen deze velden worden getoond in de details van de instance.
Trackable fields worden aangemaakt in het services scherm. Dat is het scherm waar de ESB Control website standaard mee opent. Indien je je in het instances scherm bevindt kan je naar het services scherm door middel van het services icoon: 
De trackable fields worden gedefinieerd door op een adapter in het grafische proces overzicht te klikken. Vervolgens klikken op het tabblad “Trackable Fields” boven het grafische proces overzicht. Er verschijnt dan een lijst met de gedefinieerde trackable fields. Door op de + te klikken kan een trackable field worden toegevoegd. Het scherm ziet er dan zo uit:
![]()
Figuur 13, ESB Console, het aanmaken van een tracking field
Door op het toverstaf icoon te klikken bij “Expression” kan door middel van een XPath expressie worden aangegeven welk gedeelte van het bericht moet worden bewaard bij de instance. Wij willen voor deze test het volledige bericht als trackable field opslaan, en kiezen voor het root element van het bericht. Kies vervolgens de button “Apply” om de wijziging door te voeren.
Als we nu wederom het Volkswagen test bericht in de directory plaatsen zodat het wordt verwerkt door het integratie proces, kunnen we bij de details van de instance het bericht als trackable field terug zien. Dat ziet er in het scherm zo uit:
Figuur 14, ESB Console instances scherm met gegevens over de verwerking van het Volkswagen XML bericht met instance details en tracking data.
De details van de instance zijn niet altijd zichtbaar. Klik op het “collapse” icoon links onder het grafische proces overzicht om het detail gedeelte uit te klappen (
). Klik daarna op het tabblad “Details”. Door vervolgens in het grafische overzicht op de verschillende adapters of services te klikken worden de details getoond.
Bij de details van de database adapter zien we in het veld “Tracking data” de als tracking field geselecteerde data. Aangezien we het hele bericht als tracking field hebben gedefinieerd zien we bij de tracking data alle gegevens uit het bericht.
Beheer
Voor het beheer zijn tracking fields ook erg goed toepasbaar. Het maakt het mogelijk om in productie omgevingen alleen in foutsituaties tracking fields te laten opslaan bij de instance. Op die manier kunnen fouten makkelijker herleid worden. Daarnaast blijven de gegevens traceerbaar zodat het bericht mogelijk opnieuw voor verwerking aan het systeem kan worden aangeboden.
Naast de tracking fields is het mogelijk om bijna alle parameters van het gedeployde proces aan te passen vanuit de ESB Console. Een aanpassing in de routering regels van een routing service hoeft niet persé te gebeuren vanuit JDeveloper Studio, maar kan direct vanuit de webpagina. Dit gebeurt vanuit het services scherm door de betreffende service in het services menu te selecteren, het tabblad “Routing Rules” te klikken. Het scherm ziet er dan als volgt uit:

Figuur 15, ESB Console services scherm, aanpassen routing rules.
Dit scherm is vergelijkbaar met de manier waarop een routing rule wordt aangemaakt in JDeveloper. Op soortgelijke manier kan ook het filter worden aangepast door op het ‘trechter’ icoon te klikken.
Door deze functionaliteit in de ESB Console is het hele proces aan te passen, te testen en te debuggen terwijl het actief op de server draait. Alle configuratie van het integratie proces zijn aan te passen via de ESB Console, echter er kunnen geen adapters of services worden toegevoegd.
Samenvatting
In deze Whitebook hebben we een korte blik geworpen op het deployen, testen en beheren van ESB processen op de ESB server. We hebben de benodigde connecties aangemaakt in JDeveloper, het proces op de ESB server gedeployd, en het gedeployde proces bekeken in de ESB Console. Ook hebben we gekeken naar het aanmaken van tracking fields en het runtime wijzigen van de procesconfiguratie. Uiteraard zijn er meer mogelijkheden, die we helaas onmogelijk allemaal in één Whitebook kwijt kunnen. In de komende Whitebooks zullen we hier zeker nog op terug komen. De belangrijkste features zijn echter wel in dit Whitebook voorbij gekomen.
Het deployen, testen en beheren van ESB integratie processen werkt redelijk eenvoudig en intuïtief. Soms is het echter even zoeken naar de details. Zo zijn de instance details in het begin lastig te vinden, omdat deze verborgen zijn. Het icoon om deze tevoorschijn te halen is snel over het hoofd te zien. Ook het aanmaken van de benodigde connecties in JDeveloper Studio kan in het begin verwarrend zijn. Buiten deze kleine minpuntjes maakt de flexibiliteit van Oracle ESB veel goed. Als men eenmaal gewend is aan de manier waarop gedeployd wordt en hoe de ESB Console is opgezet, kan er snel en effectief getest en beheerd worden.
De JDeveloper Studio Project files voor deze case zijn hier te downloaden.
Referenties / Links
- Whitebook Oracle ESB deel 1, Ontwikkelen met JDeveloper Studio
- Whitebook Oracle ESB Sneak Preview:
http://www.whitehorses.nl/whitebooks/2006/oracle-enterprise-service-bus-esb
- Oracle Application Server 10g ESB:
www.oracle.com/technology/products/integration/esb/pdf/ds_esb_v10_1_2.pdf - Oracle SOA Suite Downloads:
www.oracle.com/technology/software/tech/webservices/index.html - Oracle SOA Suite Tutorial:
download-uk.oracle.com/otn_hosted_doc/soa/docs/books/astut.pdf
Over de auteurs
Martin Kleinman is Oracle consultant bij Whitehorses en heeft 7 jaar ervaring in de IT. Hij heeft veel projecten afgerond met Designer/Developer en (web)PL/SQL. Martin heeft zich gespecialiseerd als allround integratie specialist met een focus op data- en applicatie-integratie ( EAI/SOA ).
Bastiaan Schaap is Oracle/Java consultant, teamleider en Oracle web-, multi-channel en Linux specialist bij Whitehorses. Hij heeft ruim 7 jaar ervaring met de Oracle server- en ontwikkelproducten op alle gangbare platformen, zowel mét als zonder Java. Vanuit een achtergrond als systeemintegrator en programmeur heeft Bastiaan zich ontwikkeld als een allround technisch specialist met een focus op data- en applicatie-integratie ( EAI/SOA ).

Reacties
Nieuwe reactie inzenden