Schnittstellen für Verteilte System mit J2EE Frank Schwichtenberg SourceTalk 2008 Göttingen,
2 Wie einfach es sein kann, die komplexen Anforderungen an Verteilte Systeme mit Java zu erfüllen.
3 B2B ● Business-to-Business ● Kommunikation über Internet ● Service Orientierte Architektur (SOA) ● Hochintegrierbar
4 Verteilte Systeme ● Netzwerkfähigkeit – Viele Gleichzeitige Nutzer (Threads) – Connection Management ● Datensicherheit – Integrität – Verlust – Zugriff ● Hochverfügbarkeit – Skalierbarkeit – Clustering
5 Anforderungen ● (Internet-) Dienst ● Einfach nutzbar ● Flexibel einsetzbar ● Integration in andere Dienste/Applikationen ● Transaktionen ● Hochperformant ● Benutzerverwaltung, bzw. AA (Authentifizierung & Autorisierung)
6 Komponenten ● Server / Netzwerkschnittstelle ● Datenbank ● Businesslogic
7 Java ● „Java ist Netzwerkfähig“ – Servlets in Tomcat – J2EE Application-Server ? ● Java abstrahiert Datenbanken – JDBC – Hibernate ● Java ist Objektorientiert und kann XML :-)
8 Konzept ? Schnittstelle ? Was ist eigentlich zu tun ?
9 Was ist zu tun? „Mit Dingen etwas tun.“ Entitäten und Handlung Entity Session
10 Entity-Session-Model ● Entity – Object, das Abbildet/Repräsentiert womit umgegangen wird ● Session – Nicht: Sitzung mit Session-id etc. – Object, das den Umgang mit den Entities darstellt. ● Create, Retrieve, Update, Delete ● findByName ● u.v.m. ● „Sessions definieren Funktionalität auf Entities.“
11 Schnittstellen-Art ● RMI, Enterprise Service – Java spezifisch – Java ist Plattformunabhängig ● Webservice mit SOAP – Weitgehend Unabhängig von Programmiersprache – Plattformunabhängig ● REST (Representational State Transfer) – HTTP – Unabhängig
12 Webservice mit SOAP ● Wohldefiniert (WSDL, SOAP) ● Client(-generierung) Plattformunabhängig ● XML-Messages – Transportformat und -methode vollständig gekapselt ● Client arbeitet auf Objekten/Strukturen (Client-Stub) – Einfach wenn Parameter der Methoden Simple-Types sind ● Performance-Einbußen – Standardverfahren: XML-Serialisierung, HTTP – Streaming schwer ein-/umsetzbar ● Arbeiten auf Remoteobj. vs. Übertragen von Datenobjekten ● Entwurf ist oft Methodenbasiert
13 REST ● Selbsterklärend ● Repräsentations-Orientiert / Resourcen – Serialisierung / Deserialisierung ● CRUD ● HTTP, Streaming, Browser als Minimal-Client ● Oft schwer benutzbar nach funktionaler Anpassung – Nicht mehr strikt Repräsentations-Orientiert ● „Implementations Unfreundlich“ – Aber einfach, wenn schon Dinge zum Übertragen vorhanden sind. (Entities)
14 Webservice-/Rest-Clients in Java ● Bei größeren Projekten und SOA sind Clients oft in Java implementiert. – Java Client API wird benötigt !? ● Bei Webserives mit SOAP oft Server und Client mit AXIS Service nicht mehr plattformunabhängig ● Wegen einfacher, flexibler, plattformunabhängiger Schnittstelle existiert natürlich keine Java Remote Schnittstelle.
15 Transaktionen ? Performance ? Java Client API ?
16 Doch ein Java-Service ? ● Ein Schritt zurück? ● Enterprise Service mit EJB3 – JBoss, Glassfish ● Skalierbar, Clusterfähig – Entities, Sessions ● Sessions definieren Funktionalität auf Entities – Austausch von Entities (Datenobjekte) – Kein LocalHome, kein RemoteHome, kein Xdoclet – Performant – Persistenz und Transaktionen !!!
17 EJB3 „Mit Dingen etwas tun.“ Entitäten und Handlung Entity Session Persistenz Transaktionen, AA durch Anotation
18 Webservice 2.0 ● JAX-WS 2.0 – Methoden der Session werden zu Webservice-Methoden durch Anotation – Kein wscompile etc. ● XML-Messages – Document/Literal Wrapped – Serialisierung der Entities mit JaxB ● Übertragung von „Datenobjekten“ ● Transaktionen in EJB-Session – Konkurierende Zugriffe sind kein Problem
19 REST-Interface ● CRUD-Methoden der Session – Servlet bildet HTTP-Methoden auf Session-Methoden ab ● PUT, GET, PUT, DELETE ● Create, Retrieve, Update, Delete ● Repräsentation von Entities in XML (JaxB) – URI/URL mit ID der Entity – Generische Erweiterung auf Basis von XML oder Java- Reflections möglich ● Transaktionen in EJB-Session – Konkurierende Zugriffe sind kein Problem
20 BusinessLogic + ● Application Server natürlich (z.B. JBoss)
21 Das, was immer alle wollen ! ● Unterstützung verschiedener Schnittstellen ● Von einfach bis performant ● Transaktionen (zumindest intern) ● Sicherheit ● Fokussierung der Entwicklungsarbeit auf Businesslogik und Datenmodellierung
22 ● „Erzeugung von Diensten zur XML-Verarbeitung mit JaxB und EJB3“ (Masterarbeit, Mai 2006) – ● Fragen? Vielen Dank für's zuhören