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