42
SOA mit dem JBoss ESB W-JAX 04.11.2008 [email protected]

JBoss ESB

Embed Size (px)

DESCRIPTION

Vortrag auf W-Jax 2008

Citation preview

SOA mit dem

JBoss ESB

W-JAX

04.11.2008

[email protected]

• Berater, Trainer, Coach

• Softwareentwickler

• Committer im JBoss jBPM-Projekt

• Themen:

– BPM & SOA

– Process Execution (jPDL, BPEL, XPDL, …)

– JBoss SOA Platform (jBPM, ESB, Drools, …)

– Enterprise Anwendungen mit Java EE

• Siehe www.camunda.com

• Blog www.bpm-guide.de

Bernd RückerWer bin ich?

• Kurze Einführung SOA & ESB

• Der JBoss ESB

– Überblick & Laufzeitumgebung

– Services

– Messages

– Vorgefertigte Funktionalität & unterstützte Protokolle

• Beispiel

• Deployment in der SOA-Platform

• Vorsicht: Asynchronität

AgendaJBoss ESB

Herausforderungen heuteEverything is about integration…

• Integration vorhandener Systeme

• Verteilte Systeme

• Vielzahl heterogener Systeme

• Skalierbarkeit & Performance

• Ständige Veränderung & technologischer Fortschritt

Stetig wachsende Komplexität

Was hat nicht funktioniert?

• Homogenisierung der IT-Landschaft

• Redundanzfreiheit der Datenbasis

• (EAI-Projekte)

Anforderungen an „Enterprise Applications“Everything is about integration…

• File Transfer

• Shared Database

• Remote Procedure Invocation

• Messaging

Integration - TechnischEverything is about integration…

Quelle: www.EnterpriseIntegrationPatterns.com

Message oriented Middleware (MOM)Messaging führt zu loser Kopplung

Sender/

Empfänger

Sender/

Empfänger

Queue

Queue

Nachrichten

Nachrichten

Loose Kopplung

• Lose Kopplung– Funktionale Indirektion: Sender und Empfänger müssen

sich nicht kennen

– Zeitliche Indirektion: Sender und Empfänger müssen nicht gleichzeitig laufen, Auslieferung von Nachrichten wird durch Middleware garantiert

• Flexibilität– Nachrichten können an einen anderen Empfänger

geroutet werden

– Nachrichten können vor Auslieferung überarbeitet werden

• Anbindung unterschiedlicher Protokolle und Systemumgebungen

Message oriented MiddlewareVorteile

IntegrationsansätzeEverything is about integration…

Traditional EAI ESB

Application Server

Message oriented

Middleware (MOM)

/ Custom code

Hub & Spoke

Integration

Distributed

Integration

Good Seperation

between integration

and application logic

No Seperation

between integration

and application logic

Quelle: Chappell, „Enterprise Service Bus“

Enterprise Service BusWas ist ein ESB?

Message Bus

BonitätscheckKundendaten

Web-Service EJBs SAP

Server

TransportQueuing Routing Discovery Mapping

Kreditprozess

BPEL-Prozess

.NET

Partner

Web-

service

ESB ESB

EJB-Container

JMS, …EJB

Mehrere ESBs

werden „einfach“

verknüpft:

Unterschiedliche Protokolle

werden unterstützt

Funktionalität

• Messaging

• Intelligentes Routing

• Tools für Transformation

• Abstraktion von Protokollen

• Vorgefertigte Adapter

Vorteile

• Virtualisierung (welche Services laufen wo und wie)

• Zentralisierung von Aspekten (Security, Management, Policy-Überwachung, …)

• „Zwang“ zu Asynchronität ;-)

• …

Enterprise Service BusWas ist ein ESB?

BPM & SOA

Quelle: Nicolai Josuttis

Process Services

• Geschäftsprozesse

Composed Services

• Orchestrieren von

Basic Services

Basic Services

• Kapselung von

Backend-

Funktionalität

• Verstecken der

Implementierungs-

details

• ACID

Service-KlassifizierungWas ist ein Service?

Process

Services

Composed

Services

Basic

ServicesFundamental

SOA

Federated

SOA

Process-

enabled

SOA

Nach Nicolai Josuttis

BPM & SOA„Fully fledged“

Quelle: Nicolai Josuttis

• Services kapseln Geschäftsfunktionalität

• Möglichst unabhängig

• Möglichst Zustandslos

• Orientiert an Geschäftsfunktionalität („Bridging the

Business-IT-Gap“)

• Dokumentiert und Managed Governance

• Technische Implementierung zweitrangig

– Nach Möglichkeit plattformunabhängig

ServiceWas ist ein Service?

• JBoss-Projekt, Open Source (LGPL)

• Teil der JBoss SOA Platform

• Lauffähig auf JBoss AS (oder Standalone)

• Aktuell Version 4.4

• Entwickelt als Rosetta ESB bei Aviva Canada

(Große Versicherung)

• Große Community

• Umfangreiche & gute Dokumentation!

Der JBoss ESBDas Projekt

Enterprise Service BusJBoss ESB

Service

Services = Listener + Action PipelineJBoss ESB

Listener

ESB aware

Message Action 2Action 1 Action …

public class MyEsbAction {

public MyEsbAction(ConfigTree config) {

// read stuff from configuration

}

public Message process(Message m) {

// do whatever you need to do

return m;

}

}

ESB aware

Message

Provider

Gateway

normal

Message

ESB aware

Message

XML

config

ESB aware message

Nachrichtenformat: XML oder Binär (Java)

ESB aware messagesJBoss ESB

Body

Context

Header

Attachement

Message

Datastore

order

DEFAULT_BODY

_LOCATION

customer_id

Routing,

Adressing,

Session,

Security,

Transactions

Payload

• Transformationen & Konverter, z.B.– XStream

– Smooks

• BPM-Integration (aktuell jBPM)

• Skripting (z.B. Groovy)

• Routing– siehe Enterprise Integration Patterns

– Content Based Routing über Drools

• Adapter, z.B.– SOAP

– EJB 3

• …

Vorgefertigte ActionsJBoss ESB

Content Based RoutingJBoss ESB

Achtung: Wie viel Business-Logik

wollen Sie in der Infrastruktur?

Message Routing PatternsUnterstützt durch ESB

Quelle: EnterpriseIntegrationPatterns

• JMS (JBossMQ, JBoss Messaging, ActiveMQ,

MQSeries, Oracle AQ)

• SOAP

• HTTP

• Database

• (S)FTP

• Shared file system

• Email

• …

ProviderJBoss ESB

• Services erhalten logischen Namen

– Welcher ESB ist transparent

– Protokoll & technische Details transparent

• EndpointReference (EPR) wird in Registry

eingetragen

• Default: jUDDI

• Austauschbar

RegistryJBoss ESB

Beispiel aus dem JavaMagazinJBoss ESB + JBoss jBPM

Environment JBoss jBPMESB

Event

(File)

Case

Management

JMS-

Message

Tasklist

Notwendige Services im JBoss ESBJBoss ESB + JBoss jBPM

Environment JBoss jBPMJBoss ESB

Case Mngt Legacy Service

Create Case Service

start

process

prepare

Parameter

call Web

Service

create

message

from file

Event

(File)

Case Completion Service

signal

process

read

message

Case

Management

JMS-

Message

• Create Case Service

– Datei einlesen

– Starten jBPM Prozess zur Orchestrierung

• Case Management Legacy Service

– WebService ansprechen

• Case Completion Service

– JMS-Nachricht entgegennehmen

– Korrelation zu jBPM herstellen und Prozess triggern

DemoJBoss ESB + JBoss jBPM

Live-Demo…

Service

Action 2Action 1

Provider

Listener

Action …

Gateway

ESB aware

Message

normal

Message

ESB aware

Message

PackagingJBoss ESB in Action

.ESB

Process Archive

(par)

Other classes &

Applications

JBoss

ESB

App-Server-Node

Applications

(EAR)

META-INF/

jboss-esb.xml

PackagingJBoss ESB in Action

Create Case Service

Case Management

Legacy Service

Event

(File)

Case Completion

Service

Case

Management

JMS-

Message

JBoss

ESBjBPM

package

deployed in

engine

Versionierung von Services und ProzessenCutting Edge in der JBoss SOA Platform ;-)

.ESB

Process Archive

(par)

classes

jBPM

Process Engine

JBoss

ESB

Version: 1.7

.ESB

Process Archive

(par)

classes

process-definition

name:

„OrderProcess_1.8“

version: 1

Version: 1.8

process-definition

name:

„OrderProcess_1.8“

version: 2

process-definition

name:

„OrderProcess_1.7“

version: 2

process-definition

name:

„OrderProcess_1.7“

version: 2

process-definition

name:

„OrderProcess_1.7“

version: 3

jbpm Datasource

.ESBother services

jbpm

deployer

Classloading Magic: jBPM-DeployerCutting Edge in der JBoss SOA Platform ;-)

jbpm.deployer

ESB / EAR / …

jbpm-ds

par

ProcessClassLoader

Deployer MBean

ScopedClassLoader

App-Server-Node

ProzessCaseCase

Order…

ClassLoaderUCL@123UCL@889UCL@420

In-Memory ClassLoaderRepository

jbpm(jars, config)

2. deploychangedprocesses

par

1. pick upprocessarchives

3. registerclassloader

query CL for process

Load classes fromclassloader

Siehe Blog:

www.bpm-guide.de

Feedback erwünscht!

• JBoss ESB 4.4

• jBPM 3.3 GA (cooming soon)

• Spezieller jbpm.deployer (optional)

• Beispiel-Code sowie Beschreibung jbpm.deployer

auf camunda-Blog verfügbar (ASAP ;-)):

www.bpm-guide.de

Verwendete Software & CodeJBoss ESB in Action

Achtung SOA!Tücken im Detail

SOA fordert und fördert AsynchronitätTücken im Detail

Quelle: Gregor Hohpe

Request-Response / 2 One-Way MessagesMessage Exchange Patterns (MEP)

Quelle: Nicolai Josuttis

Mapping MEPs durch InfrastrukturMessage Exchange Patterns (MEP)

synchron request

request msg.

synchron response

request msg.

Consumer ESB Provider 1 Provider 2

response msg.

response msg.

„The tale of the magic Bus“Von Nicolai Josuttis

GovernanceESB ist Hilfsmittel, nicht Lösung! Aber

Open Source ermöglicht Reinwachsen

Zentraler Bus liefert Ansatzpunkte

Orchestrierung vs. Choreographie

Orchestrierung

• Zusammensetzen der Services zu neuen Services

• Geordnet, Prozesse, Zentrale Steuerung

• Innerhalb des Unternehmens

Metapher: Ampel

Choreographie

• Keine zentrale Steuerung, Ad-Hoc

• Oft zwischen Unternehmen

Metapher: Kreisverkehr

Tücken im Detail

Orchestrierung Unternehmen B

Orchestrierung Unternehmen A

Choreographie

Choreographie statt Orchestrierung?Event Driven Architecture

• JBoss ESB reift gerade aus (Version 4.4 schon sehr stabil)

• Technische Grundlage ist gut

• Erfahrungen im Bereich JBoss AS, Messaging & cokönnen wieder verwendet werden

• Einige vorgefertigte Integrationen / Adaptoren / Provider

• Kein wirkliches Tooling

• Hilfestellungen im Bereich Governance fehlen noch, in Zukunft JBoss SOA-G, JBoss ON, …?

• JBoss SOA Platform 5 wird spannend!

• Achtung: ESB heißt evtl. auch SOA ;-)

• Viele „Quickstarts“, also: Ausprobieren!

FazitJBoss ESB

Fragen & Antworten

Unsere Themen

• Ganzheitliches BPM

• Prozessautomatisierung

• SOA, BPEL, XPDL, JBoss SOA Platform(jBPM, Drools, ESB)

• BPMN

• BPM-Toolauswahl

Unsere Leistungen

• Beratung

• Seminare

• Process Hosting

Bernd Rücker

Geschäftsführer

Berater, Trainer & Coach

[email protected]

+49 711 3278645

+49 171 1473461