Enterprise Application Integration Spring Integration. Thomas Kruse



Ähnliche Dokumente
Contexts and Dependency Injection. W3L AG

Application Frameworks

Spring Dynamic Modules for OSGi Service Platforms

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Enterprise Application Integration Erfahrungen aus der Praxis

Abschlusspräsentation Projekt Loan Broker mit BizTalk 2010

= Smart Enterprise Application Integration

SE2-10-Entwurfsmuster-2 15

Objektorientierte Programmierung

WebSphere Application Server Installation

Auszug aus JAX-WS Folien

Business Process Management und Enterprise Service Bus

Enterprise Application Integration. Sascha M. Köhler Software Architekt

Wiederholung: Beginn

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

Erfahrungsbericht zu JBoss SOA Platform 6 Tech Talk 2013, 17. Oktober 2013, Bern

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

Java 2, Enterprise Edition Einführung und Überblick

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Übungen zu Softwaretechnik

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Sicherheitsaspekte in Service Orientierten Architekturen. Eike Falkenberg Sommersemester 2006 Anwendungen I

Java Enterprise Architekturen Willkommen in der Realität

Integrationsmuster am Beispiel von Apache Camel

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart

Existierende Systeme I Bibliotheken & Frameworks

Spring Dynamic Modules for OSGi Service Platforms

Systembeschreibung. Masterplan Kommunikationsinterface. ASEKO GmbH. Version 1.0 Status: Final

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Ein Vergleich zwischen SCA,JBI und WCF. Marcello Volpi

SOA. Prof. Dr. Eduard Heindl Hochschule Furtwangen Wirtschaftsinformatik

Eine technische Plattform für Smart-Client-Systeme. Alexander Ziegler

Softwareentwicklung mit Enterprise JAVA Beans

Modellierung von RFID-Prozessen mit offen Softwarestandards

Prinzipien Objektorientierter Programmierung

Evaluation of Java Messaging Middleware as a Platform for Software Agent Communication

Gemusterte Kamele. Systemintegration mit Java und Apache Camel. Tobias Israel

Seminarvortrag Serviceorientierte Softwarearchitekturen

Programmierung von Client/Server- Anwendungen

12.4 Sicherheitsarchitektur

5. Programmierschnittstellen für XML

16.4 Wiederverwendung von COTS-Produkten

EAI - Enterprise Application Integration

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Schedulingund Thread-Ausführer

Design Patterns 2. Model-View-Controller in der Praxis

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

SOA mit.net: Vom Geschäftsprozess zur Lösung

Guten Tag! CampusSource. Die CSE Integration Platform. CampusSource Engine. Christof Pohl Softwareentwicklung Medienzentrum Universität Dortmund

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Performance Analyses with inspectit

Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

Software-Architekturen für das E-Business

An integrated total solution for automatic job scheduling without user interaction

AKWi: SOA SOA-Technologiebenchmark Java RMI vs. Microsoft WCF

e-business - Patterns Stefan Brauch (sb058) -- Julian Stoltmann (js057)

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Überblick Produkte. ORACLE AS 10g R3 JAVA Programming. (5 Tage)

Message Oriented Middleware am Beispiel von XMLBlaster

Enterprise Application Integration

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

USU Smart Link Ausblick & Roadmap

Man liest sich: POP3/IMAP

WebService in Java SE und EE

Lightweight Java in der Automatisierungstechnik

Social Media as Sensors. Nikolai Bock FOSSGIS 2014

Anbindung LMS an Siemens S7. Information

Evaluierung verteilter Middleware-Technologien zur Steigerung der Integrationsfähigkeit von Enterprise-Software

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

5. Programmierschnittstellen für XML

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Brownbag Session Grundlagen Virtualisierung Von VM s und Containern

Der Weg zur eigenen App

Client-Server-Beziehungen

Der nächste Schritt: Kommunikation zwischen R/3 und externen Systemen Auswahl von SAP-Interfaces unter Qualitäts- und Performance-Aspekten

Übungsaufgabe Transaktion als Middleware

Verteilte Systeme: Übung 4

E-Services mit der Web-Service-Architektur

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Acceptor-Connector. Acceptor-Connector

CORBA. Systemprogrammierung WS

REST-Services mit Dropwizard ruck-zuck erstellt, dokumentiert und getestet

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Factory Method (Virtual Constructor)

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dokumentation zum Projekt Mail-Adapter in SAP PI Sinkwitz, Sven Theel, Thomas

Transkript:

Enterprise Application Integration Spring Integration Thomas Kruse

Agenda Motivation Enterprise Integration Spring Framework Spring Integration Q&A http://www.jug-muenster.de/ 2

Anforderungen an Informations Systeme Die richtigen Informationen Am richtigen Ort Zur richtigen Zeit Ermöglicht Kommunikation Zwischen Menschen Computern und Maschinen Basis für Kooperation und Koordination Herausforderung: Kontinuierlicher Wandel der Umgebung Schwer vorhersehbar bis unplanbar http://www.jug-muenster.de/ 3

Beispiel: Airbus A-380 Airbus A-380 Verzögerung Projekt um Jahre verspätet Kosten: > 8 Milliarden Euro Hintergrund: Firmenkonsortium bis 2001 Airbus Standorte verwenden eigene Software Eigene Methoden und Prozesse CAD Software CATIA in Hamburg: 1996, Toulouse: 2001, zusätzlich PMTC Fehleranfällige Konvertierung der Daten nötig http://www.jug-muenster.de/ 4

Herausforderung: Heterogene Systeme Plattform DBMS, Hardware, Betriebssystem, Netzwerk, Daten Schema Konflikte, Modellierung, Normierung, Daten Typen, Maßeinheiten Organisation Verwendung von Drittkomponenten, Abteilungen verwenden jeweils eigene Informationssysteme Ausgestaltung der Prozesse bei verschiedenen Abteilungen und Standorten http://www.jug-muenster.de/ 5

Ziel: Integration Daten und Dienste miteinander verbinden Firmenfusion oder Zukäufe Neue Dienstleister oder Schnittstellen Neue Geschäftsprozesse Legacy Systeme Integration statt Ablösung Kapselung von Komplexität Integration der Daten/Dienste über Nachrichten http://www.jug-muenster.de/ 6

Enterprise Application Integration (EAI) http://www.jug-muenster.de/ 7

Enterprise Integration Patterns Patterns Bewährte Lösung für wiederkehrende Probleme Gelten in einem bestimmten Kontext Einheitliches Beschreibungsschema, Sprachunabhängig vgl. Designpatterns (GoF), Anti-Patterns,... Gregor Hohpe, Bobby Wolf Enterprise Integration Patterns 2003 (Amazon) Homepage: http://www.eaipatterns.com/index.html http://www.jug-muenster.de/ 8

Pipes and Filters Architekturmuster Pipes and Filters Entkoppelt Systeme Änderungen haben lokale Auswirkungen Trennung der Verantwortlichkeiten Pipe: Verbindet Systemkomponenten Filter: Verarbeitungsschritt EAI Komponenten: Einfache Bausteine Nachrichten Kanäle (Pipe) Endpoints (Filter) http://www.jug-muenster.de/ 9

EAI: Umsetzung EAI Patterns: Agnostisch für Technologie Beispiele für Integrationstypen Datei Transfer (Netzwerklaufwerk, FTP,...) Geteilte Datenbank Messaging (JMS, SMTP, POP3, IMAP,...) Remoting (RPC, REST, SOAP, RMI, ) Middleware und Frameworks als Unterstützung Verschiedene Gewichtsklassen TIBCO, Microsoft BizTalk, Websphere ESB OpenSource: OpenESB, Mule, Camel, Spring Integration, http://www.jug-muenster.de/ 10

Komponenten Intuitive Notation Header Payload Nachrichten Kanal Endpoint http://www.jug-muenster.de/ 11

Messaging Messaging Realisierungen Synchron Asynchron Point to Point (Queue) Publish Subscriber (Topic) Versand Innerhalb eines Systems Über Systemgrenzen hinweg JMS, Messaging Vorteile Reduktion der Komplexität auf handhabbare Bausteine Performance: Asynchrone und parallele Ausführung http://www.jug-muenster.de/ 12

Nachrichten Versand Komponenten werden über Kanäle verbunden Sender Nachricht Eine Nachricht besteht aus Header Payload Empfänger (Payload) Daten werden optional de-/serialisiert für Transport http://www.jug-muenster.de/ 13

Spring Integration Spring Integration Dezember 2008: 1.0 GA Mitte 2010: 2.0.0.M7 http://www.jug-muenster.de/ 14

Spring Integration Spring Paradigmen für Integrations Domäne Leichtgewichtig, kein Application Server Nicht-invasives POJO Modell Gut Testbar Wiederverwendbar Enterprise Integration Pattern Implementierung Message und Channel Ansatz auch für Anwendungen ohne Integrationsdomäne Spring Integration 2: Spring Expression Language http://www.jug-muenster.de/ 15

Nachrichten Spring Message Interface Message <T> + getid() : Object + getheader() : MessageHeader + getpayload() : T + isexpired() :boolean Generischer Typ für Nachrichten Body Correlation ID Header POJO als Message Body Innerhalb einer Anwendung: Keine De-/Serialisierung Spring verwendet generische Typen für Message Body Typisch Spring : POJO statt Messages Payload Header http://www.jug-muenster.de/ 16

Spring Integration Channels Channels nicht mit JMS Queue/Topic verwechseln Leiten Nachrichten weiter Innerhalb einer JVM Instanz Channel Typen in Spring Integration (Interfaces) MessageChannel PollableChannel - puffert SubscribeableChannel kein Puffer Verschiedene Implementierungen Channel Interceptor Wire-Tap http://www.jug-muenster.de/ 17

Spring Integration Endpoints Channel Adapter Unidirektional Inbound: System an Chanbnel Outbound: Channel an System JMS, File, http, Mail Messaging Gateway Bidirektional SimpleMessagingGateway GatewayProxyFactoryBean Gemischter Einsatz Gateway Channel Adapter http://www.jug-muenster.de/ 18

Adapter Konfiguration: XML <jms-inbound-channel-adapter connectionfactory= jmsconnectionfactory destinationname= foo channel= requests /> <file-outbound-channel-adapter id= filewriter directory= file:${java.io.tempdir}/out channel= processedrequests /> http://www.jug-muenster.de/ 19

Service Activator Service Activator Aufruf von Diensten Antwort ist neue Nachricht Spring: Method invoking outbound Gateway Methode auf Objekt aus lokalem Spring Context Service http://www.jug-muenster.de/ 20

Router, Transformer, Filter Router Payload Header Recipient Transformer (Translator) Ändert Inhalt oder Struktur der Nachricht Vorbereitung auf nachfolgenden Konsumenten Filter Entscheidet ob Nachricht weitergeleitet werden soll http://www.jug-muenster.de/ 21

Weitere Endpoints Splitter Nachricht aufteilen Aggregator Nachricht aus mehreren Einzelnachrichten erzeugen Resequenzer Delayer Chain Bridge http://www.jug-muenster.de/ 22

Real Life Example http://www.jug-muenster.de/ 23

@Splitter Spring Integration: Splitter und Router public List<Document> orderitems(document doc){ return splitorder(doc); } @Router public String resolvetransport(mailing mail) { if (mail.isinternational()) { return "airmail"; } return "domesticmail"; } http://www.jug-muenster.de/ 24

Service Activator Message Endpoints @MessageEndpoint public class FooService { @ServiceActivator public void processmessage(message message) { } } Header Auswertung @ServiceActivator public void do(string payload, @Header( foo ) int foovalue) { } http://www.jug-muenster.de/ 25

Sicherheit und Fehler Transaktionen Mit Messaging (JMS) realisierbar Ende an Systemgrenzen Security Innerhalb jedes Systems zu regeln Error Handling: try-catch bei DirectChannel (synchron) Sonst (asynchroner Fall/Messaging System): Auswertung Header errorchannel Globaler errorchannel (Spring Bean) ErrorMessageExceptionTypeRouter verwenden http://www.jug-muenster.de/ 26

Demo Anwendung Verfügbar über Mercurial Repo der JUG Münster Twitter und Mail Anbindung für Nachrichten Maven Projekt mit Spring Integration Leichter Einstieg Blog Artikel Serie: Bald! http://www.jug-muenster.de/ http://www.jug-muenster.de/ 27

Best Practice An Systemgrenzen XML als Datenformat Keine Objekt-Messages versenden Versionierungsprobleme Java Abhängigkeit White Board nutzen! http://www.jug-muenster.de/ 28

Fazit Vorhandene Frameworks nutzen: Rad nicht neu erfinden! Standards verwenden, auch auf Architekturebene Integration erlaubt Weiterverwendung bestehender Systeme Anbindung neuer Systeme wird vereinfacht Modularisierung, lose Koppelung spart Kosten Spring ist leichtgewichtige Alternative zu Middleware http://www.jug-muenster.de/ 29

www.jug-muenster.de Folien und weitere Informationen http://www.jug-muenster.de/ http://www.jug-muenster.de/ 30

Links http://www.eaipatterns.com/toc.html http://www.springsource.org/spring-integration http://static.springsource.org/spring/docs/3.0.x/springframework-reference/html/ http://static.springsource.org/springintegration/docs/2.0.x/spring-integrationreference/htmlsingle/ http://refcardz.dzone.com/refcardz/enterprise-integration http://refcardz.dzone.com/refcardz/soa-patterns http://de.wikipedia.org/wiki/pipes_und_filter http://de.wikipedia.org/wiki/rube-goldberg-maschine http://www.jug-muenster.de/ 31

Enterprise Service Bus Enterprise Service Bus (ESB) Plattform für EAI Dolmetscher Rolle Statt Point-To-Point Einsatz von Bus-Architektur Bereitgestellte Dienste Routing: Festes und bedingtes Routing Messaging: Transformation Mediation: Adapter, Service-Mapping Ereignisverarbeitung: Korrelierende Ereignisse auf dem Bus Dienstaufruf: Anbieten und Aufrufen von Diensten Spring Integration: ESB in a Box http://www.jug-muenster.de/ 32

Spring Framework http://www.jug-muenster.de/ 33

Spring Framework Antwort auf Komplexität von J2EE / EJB Dependency Injection (IoC) Aspekt orientierte Programmierung Security, Transaktionen Templates POJO Vereinfachung von APIs Nicht invasiv, leicht zu testen Inzwischen kompletter Enterprise Stack Portierungen: Spring.NET http://www.jug-muenster.de/ 34

Inversion of Control Service instantiiert Abhängigkeiten Service service = new MyService(); Factory Pattern Service service = factory.constructserviceinstance(); Hollywood-Prinzip: Don't call us, we call you! public class Collaborator { private Service service; // interface Service public void setservice (Service service) { this.service = service; } } Konfiguration über XML oder Annotationen public class Collaborator { @Autowired private Service service; } http://www.jug-muenster.de/ 35

Java IoC Spring hat die Entwicklung von Java beeinflusst JSR-299, JSR-330 und Guice JSR-299: Contexts and Dependency Injection (CDI): JEE JSR-330: Dependency Injection For Java: Annotationen Google Guice: Nur IoC Container, kein XML Spring erlaubt DI für alle POJOs, nicht nur Services Nicht nur DI/IoC: Zusätzlich Konfiguration Aber: Annotationen nicht JSR-330 kompatibel http://www.jug-muenster.de/ 36

Konfiguration und Verknüpfung @Autowired oder XML XML erlaubt Konfiguration der Beans <bean id="caller" class="example.caller"> <property name="service" ref="myservice"/> </bean> <bean id="myservice" class="example.myservimpl"/> <bean id="mail" class="example.mymailimpl"> <property name="host" ref="localhost"/> </bean> Standard: Singleton Objekte Weitere Scopes: Prototype, Request, Session Fine Tuning: Init- und Destroy-Methoden http://www.jug-muenster.de/ 37

Bootstrapping der Application über Spring Spring Servlet bei Webanwendungen Programmatisch: Spring ApplicationContext Application Context public class Example { public static void main (String args[]) { ApplicationContext context = new ClassPathXmlApplicationContext("context.xml"); } Service sv = context.getbean("service", Service.class); } Unit/Integration Tests @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"/applicationContext.xml", "/applicationcontext test.xml"}) public class TestClass { } http://www.jug-muenster.de/ 38

Spring Integration Channel Realisierungen DirectChannel QueueChannel Pub Sub Rendezvous Executor http://www.jug-muenster.de/ 39

Adapter Realisierungen JMS RMI Http Invoker HTTP File Spring Web Services Mail Spring Application Events http://www.jug-muenster.de/ 40

Baukasten Note: Blue 3 Red 5 Green Datenbank http://www.jug-muenster.de/ 41