Vortrag ESB von Ahmadreza Ibrahimzadeh 20.05.2010

Transcrição

Vortrag ESB von Ahmadreza Ibrahimzadeh 20.05.2010
Vortrag
ESB
von
Ahmadreza Ibrahimzadeh
20.05.2010
Inhaltsverzeichnis
1. Einleitung..............................................................................................................................3
2. Enterprise Service Bus (ESB) ..............................................................................................3
2.1 Produkte .........................................................................................................................3
2.2 JBOSS-ESB, Riftsaw .....................................................................................................3
3. ESB-Eigenschaften ..............................................................................................................4
3.1 Service und Nachrichten ................................................................................................7
3.2 Client ..............................................................................................................................7
3.3 JBossESB Listener-Konfigurationen ..............................................................................7
4. Nachricht ..............................................................................................................................8
5. Buildung und Service .........................................................................................................10
5.1 Listeners.......................................................................................................................10
5.2 Router...........................................................................................................................10
5.3 Notifiers ........................................................................................................................10
5.4 ServiceInvoker..............................................................................................................10
5.4.1 Transaction Semantics ..........................................................................................10
5.4.2 Threading ..............................................................................................................10
5.4.3 Load Balancing......................................................................................................10
5.4.4 Pass-by-Value/Pass-by-Reference .......................................................................11
5.5 Deployment ..................................................................................................................11
5.6 ESB-Services ...............................................................................................................11
6. Beispiele.............................................................................................................................11
Seite 2 / 13
1. Einleitung
ƒ
Paradigma Software-Entwicklung
ƒ COBOL (1959, Funktionale Dekomposition, Flow Charts)
ƒ Funktionale Programmierung (Pascal, Mini Service in form von .lib)
ƒ Modul-Konzept (Ada, Modula2, VBX)
ƒ OOP (1967, Simula), Kapselung & Bündelung von Daten, Funktionen und das
ƒ Konzept der Entities als Objekt. Es führte zu Interface Paradigma
ƒ Distributed Computing (UNIX, telnet, NFS, CORBA, DCOM, EJB, XML
ƒ SOA
ƒ
Paradigma Mensch-Maschine-Interaktion
ƒ
Paradigma Maschine-Maschine-Interaktion
ƒ SOA
2. Enterprise Service Bus (ESB)
ESB ist die nächste Generation von EAI – besser und Hersteller-unabhängig.
Traditionelle EAI Stacks beinhalten:
ƒ Business Process Monitoring
ƒ Integrated Development Environment
ƒ Human Workflow User Interface
ƒ Business Process Management,
ƒ Connectors
ƒ Transaction Manager
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Security
Application Container
Messaging Service
Metadata Repository
Naming and Directory Service
Distributed Computing Architecture
Für den Betrieb der Interaktion zwischen den Services und mit den bestehenden Systemen
bedarf es einer Kommunikations-Infrastruktur. ESB stellt diese Infrastruktur zur Verfügung.
2.1 Produkte
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Open ESB
ServiceMix
Apache Synapse
Celtix
Mule
Oracle WebSphere
und viele andere
Æ https://open-esb.dev.java.net
Æ http://servicemix.apache.org
Æ http://synapse.apache.org
Æ http://celtix.ow2.org
Æ http://www.mulesoft.org
2.2 JBOSS-ESB, Riftsaw
ƒ
ƒ
ƒ
ƒ
ƒ
Open Source BPEL Engine
WS-BPEL 2.0 engine
Basiert auf Apache ODE (Orchestration Director Engine), CFX
UDDI registrierung von BPEL endpoints, und Runtime UDDI Endpoint lookup als
Vorschau feature
Integriert mit JBoss ESB (Infrastruktur logic.).
ƒ Java spezifisch
ƒ Run-time message mediator
ƒ Message translation
Seite 3 / 13
ƒ
Security model translation
3. ESB-Eigenschaften
•
•
•
•
•
•
•
•
Process orchestration, typischerweise über WS-BPEL
Protocol translation
Adapters
Change management (Hot Deployment, Versionierung, Lifecycle-Management)
Quality of service (Transaktionen, Failover)
Quality of protection (Message Encryption, Security)
Management
Eclipse-based BPEL designer und deployment
Seite 4 / 13
JMS Implementation
Seite 5 / 13
Service Registry ist eine JAXR Registry-Implementation.
In dem Bsp.: Registry benutzt RMI basierte Kommunikation.
JMS Gateway Listener: Der “Gateway Listener” ist eine der Schlüssel
Architektur- Komponenten von JBossESB. Diese Typ Listener ist die Schnittstelle zu dem
ESB aus Endpoints ausserhalb der ESB -Domain. In diesem Beispiel Fall wird ein JMS
Gateway benutzt.
ESB Aware and Unaware Messages
In dem JBossESB-Konzept ist der Typ „Message“ genau definiert, nämlich in
xml/message.xsd. Mit diesem Konzept wird die Übertragung von decorated messages
zwischen den Komponenten des ESB ermöglicht.
Seite 6 / 13
3.1 Service und Nachrichten
Nach den SOA-Prinzipien ist alles innerhalb JBossESB entweder ein Service oder eine
Message. Services beinhalten die Geschäftslogik oder drucken die Legacy-SystemsIntegration. Nachrichten sind die Kommunikationswege zwischen Clients und Services.
<?xml version = "1.0" encoding = "UTF-8"?>
<jbossesb
xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schema
s/xml/jbossesb-1.0.1.xsd" invmScope=”GLOBAL”>
<services>
<service category="Retail" name="ArienStore"
description="Arien Store Service">
<actions>
<action name="println"
class="org.jboss.soa.esb.actions.SystemPrintln" />
</actions>
</service>
</services>
</jbossesb>
3.2 Client
ServiceInvoker invoker = new ServiceInvoker(“Retail”, “ArienStore”);
Message message = MessageFactory.getInstance().getMessage();
message.getBody().add(“Hi there!”);
invoker.deliverAsync(message);
Service Registry ist das Bindeglied zwischen Service/Nachrichten mit Clients.
3.3 JBossESB Listener-Konfigurationen
JBossESB unterstüzt zwei Arten von Listener-Konfigurationen:
ƒ
Gateway Listeners:
Diese Listener-Konfiguration konfiguriert ein “Gateway” Endpoint. Dieser kann zum
Nachrichten-Empfang im ESB genutzt werden. Er ist für die Übertragungs-Informationen
einer Nachrichten verantwortlich, bevor sie an die Service's Action Pipeline übergeben
werden.
ƒ
ESB Aware Listeners: Diese Listener-Konfiguration konfiguriert einen “ESB Aware”
Endpoint. Dieser wird für den Austausch der Nachrichten zwischen ESB Aware
Komponenten genutzt.
Bsp. : JMS Gateway listener
<?xml version = "1.0" encoding = "UTF-8"?>
<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/
trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd">
<providers>
Seite 7 / 13
<jms-provider name="JBossMQ" connection-factory="ConnectionFactory">
<jms-bus busid="arienStoreJMSGateway">
<jms-message-filter dest-type="QUEUE" destname="queue/arienStoreJMSGateway"/>
</jms-bus>
</jms-provider>
</providers>
<services>
<service category="Retail" name="ArienStore" description="Arien Store
Service" invmScope=”GLOBAL”>
<listeners>
<jms-listener name="arienStoreJMSGateway"
busidref="arienStoreJMSGateway" is-gateway="true"/>
</listeners>
<actions>
<action name="println"
class="org.jboss.soa.esb.actions.SystemPrintln" />
</actions>
</service>
</services>
</jbossesb>
4. Nachricht
Bei allen Interaktionen zwischen Clients und Services in JBossESB findet ein
Nachrichtenaustausch statt.
<xs:complexType name="Envelope">
<xs:attribute ref="Header" use="required"/>
<xs:attribute ref="Context" use="required"/>
<xs:attribute ref="Body" use="required"/>
<xs:attribute ref="Attachment" use="optional"/>
<xs:attribute ref="Properties" use="optional"/>
<xs:attribute ref="Fault" use="optional"/>
</xs:complexType>
Seite 8 / 13
public interface Message {
public Header getHeader ();
public Context getContext ();
public Body getBody ();
public Fault getFault ();
public Attachment getAttachment ();
public URI getType ();
public Properties getProperties ();
}
Seite 9 / 13
5. Buildung und Service
5.1 Listeners
Listeners kapseln die Endpoints für den ESB-Aware Nachrichtenempfang. Sie leiten die
Nachrichten in eine “Pipeline” von Message Prozessoren, die die Nachricht vor dem Routing
zu dem “replyTo”-Endpoint bearbeitet.
5.2 Router
Router können sowohl die Nachricht als auch Übertragung-Informationen einer Nachricht an
einen Endpoint weiterleiten. Einige Router unterstüzen 'unwrap' property. Wenn diese
Eigenschaft auf true gesetzt ist, wird die ESB Message Übertragungsinformation extrahiert
und nur diese Information wird zu dem ESB-unaware Endpoint gesendet. Wenn 'unwrap' auf
false gesetzt wird, wird die ESB Message als Ganze an Empangs-Endpoint gesendet.
Falls ein Splitting von Nachrichten benötigt wird, muss StaticWiretap action eingesetzt
werden.
Routing kann auch auf Nachrichtenbasis stattfinden.
5.3 Notifiers
Notifiers sind die Propagations-Wege für den Erfolg / Misserfolg (Error) von ESB-unawareendpoints.
5.4 ServiceInvoker
ƒ
ƒ
Transactions
InVM Transport
5.4.1 Transaction Semantics
Der InVM Transport in JBossESB ist nicht transaktional und die Message Queue wird
flüchtig in Speicher gehalten. Das bedeutet, dass nach einem Systemfehler oder -Shutdown
ist die Message-Queue nicht mehr verfügbar.
5.4.2 Threading
5.4.3 Load Balancing
Seite 10 / 13
5.4.4 Pass-by-Value/Pass-by-Reference
5.5 Deployment
Structure:
├───META-INF
│
├───jboss-esb.xml
│
├───deployment.xml
│
└───MANIFEST.MF
├───<java classes>
├───<jars>
└───<queue-service.xml>
ƒ
ƒ
<jboss-esb.xml> beinhaltet die Service/Provider Konfiguration (Listener und Actions).
<deployment.xml> ist optional, aber kann aus 2 Gründe benutzt werden:
ƒ Abhängige .esb Archive definieren, um classloader-order zu spezifizieren
ƒ Archiv-basiertes Deployment von .esb ermöglichen
ƒ <java classes>
ƒ <jars>
ƒ <queue-service.xml>
5.6 ESB-Services
ƒ
ƒ
ƒ
ƒ
jbossesb.esb - internal services like the DeadLetterService
jbrules.esb - needed for rules evaluation using JBossRules, for services like the ContentBased Router
jbpm.esb - needed for default provider of Business Process Management jBPM
smooks.esb - default message transformation engine Smooks.
Diese Services werden bei Default Deployed standardmäßig verwendet, können aber auch
von Deploy-Xml entfernt werden.
6. Beispiele
ƒ
ArienService
Jboss ESB bietet zwei Out-of-the-Box Actions für Interaktionen:
ƒ SOAP Client Action erlaubt die Nutzung von extern gehostete WS.-Endpoints
ƒ SOAP Processor Action erlaubt den Kontakt zwischen JbossWS-Endpoints durch
Endpoints (Listeners, “SOAP onto the bus”)
Seite 11 / 13
Seite 12 / 13
ƒ
XML-Files
ƒ
Client
Seite 13 / 13