Die WebSphere
Transcription
Die WebSphere
Die WebSphere-Plattform Gross, Müller, Wittner BA Stuttgart – Außenstelle Horb – Florianstr. 15, 72160 Horb IT 2005 [email protected] [email protected] [email protected] Abstract: Unter der Bezeichnung WebSphere fasst IBM eine Reihe von Werkzeugen zusammen, die rund um das Thema E-Business angesiedelt sind. Durch den Aufbau als modulare Plattform auf offenen Standards ergibt sich eine zugleich zuverlässige und flexible Entwicklungsumgebung. Zusammen genommen entsteht damit eine wirksame integrierte Gesamtlösung zur Umsetzung von Geschäftsprozessen. Der wichtigste Teil der WebSphere-Softwarekomponenten ist der WebSphere Application Server. In dieser Laufzeitumgebung werden die eigentlichen J2EEkonformen Anwendungen ausgeführt. Der Application Server bildet damit das Fundament der ganzen IBM WebSphere-Plattform und eröffnet ein breites Spektrum an Anwendungsmöglichkeiten. Deshalb wird auf ihn nachfolgend detaillierter eingegangen. WebSphere bietet eine durchgehende Unterstützung für Web Services, angefangen bei der Entwicklung, über die Integration in die vorhandene Systemlandschaft, bis hin zur Inbetriebnahme und Wartung. Die Vorteile der WebSphere-Suite gegenüber Open-Source-Alternativen liegen weniger in konkreten einzelnen Features, sondern in der engen Verzahnung der Teilprodukte, die als integrierte Gesamtlösung den Prozess der Softwareentwicklung von verteilten Diensten maßgeblich handhabbarer und planbarer werden lassen. Die WebSphere-Plattform Inhaltsverzeichnis 1 2 IBM WebSphere-Produktfamilie .............................................................................. 4 1.1 Überblick ............................................................................................................ 4 1.2 WebSphere MQ .................................................................................................. 4 1.3 WebSphere Portal Server.................................................................................... 5 1.4 WebSphere Process Server ................................................................................. 7 In WebSphere realisierte Konzepte........................................................................... 8 2.1 3 Service orientierte Architektur (SOA) ................................................................ 8 2.1.1 Warum SOA.............................................................................................. 8 2.1.2 Was ist SOA.............................................................................................. 9 2.1.3 Der SOA Lebenszyklus ........................................................................... 10 2.1.4 IBM SOA Foundation ............................................................................. 12 2.2 Dreischichten-Architektur................................................................................. 14 2.3 Transaktionen ................................................................................................... 15 WebSphere Application Server............................................................................... 17 3.1 Überblick .......................................................................................................... 17 3.2 Anwendungsserver............................................................................................ 17 3.3 Webcontainer.................................................................................................... 17 3.4 Enterprise JavaBeans ........................................................................................ 19 3.4.1 Über Entity JavaBeans ............................................................................ 19 3.4.2 Entity Beans ............................................................................................ 19 3.4.3 Session Beans.......................................................................................... 19 3.4.4 Message-Driven Beans............................................................................ 20 3.4.5 EJB-Container ......................................................................................... 20 3.5 Web Services .................................................................................................... 22 Seite 2 von 32 Die WebSphere-Plattform 3.6 Kommunikation & Datenzugriff ....................................................................... 24 3.6.1 Service Integration Bus (SIB) ................................................................. 24 3.6.2 Java Message Service (JMS)................................................................... 25 3.6.3 WebSphere MQ als JMS-Provider .......................................................... 26 3.7 Naming & Verzeichnisdienst ............................................................................ 26 3.7.1 Naming & Namespace............................................................................. 26 3.7.2 Verzeichnisdienst .................................................................................... 27 3.7.3 JNDI........................................................................................................ 27 3.8 Sicherheitsarchitektur ....................................................................................... 28 3.8.1 Authentifizierung..................................................................................... 28 3.8.2 SSL.......................................................................................................... 29 4 Abbildungsverzeichnis ............................................................................................ 31 5 Quellen.................................................................................................................... 32 Seite 3 von 32 Die WebSphere-Plattform 1 IBM WebSphere-Produktfamilie 1.1 Überblick WebSphere ist eine von der Firma IBM auf der Grundlage von industriell unterstützten offenen Standards entwickelte modulare Plattform, die folgende Aufgabenbereiche abdeckt: o zuverlässige, flexible und robuste Anwendungsintegration o Infrastruktur (z. B. Transaktionen und Warteschlangen) o integrierte Entwicklungsumgebung Desweiteren umfasst es die gesamte Middleware-Infrastruktur (Server, Dienste, Tools), welche zur professionellen Nutzung von industriellen Anwendungen benötigt wird. WebSphere läuft auf vielen Plattformen, darunter Solaris, Linux, das z/OS-System von IBM selbst und natürlich Windows. In der WebSphere-Produktepalette sind unter anderem enthalten: o WebSphere Application Server o WebSphere Portal Server o WebSphere MQ (ehemals MQSeries) o WebSphere Process Server o WebSphere Integration Developer o WebSphere Studio Application Developer Die Applikation laufen auf dem WebSphere Application Server. Dieser unterstützt SOA (service-oriented architected) Umgebungen aber auch andere. Der WebSphere Process Server, der auf WebSphere Application Server basiert, bildet die Grundlage für modulare Anwendungen. Gemeinsam wird die Verwendung von Geschäftslogiken ermöglicht, um Anwendungen, welche bei der Umsetzung von Geschäftsprozessen unterstützen, zu betreiben. Hochleistungs-Umgebungen nutzen ebenfalls WebSphere Extended Deployment als Teil ihrer Kern-Struktur. Andere WebSphere-Produkte bieten eine Vielzahl von zusätzlichen Dienstleistungen an. 1.2 WebSphere MQ WebSphere MQ ist das Nachfolgeprodukt von MQSeries. Es ermöglicht zuverlässiges Integrieren von Anwendungen, so dass diese in vollem Umfang eingesetzt werden können. Als Marktführer im Bereich Message Oriented Middleware (Nachrichtenorientierte Middleware – Begriffsklärung siehe unten) bietet es Unternehmen einen auf die individuellen Bedürfnisse hin skalierbaren Umfang an Middlewarefunktionalitäten, wie zum Beispiel Transaktion, an. Seite 4 von 32 Die WebSphere-Plattform Zum Funktionsumfang werden vom Hersteller werden unter anderem folgende Angaben gemacht: o Verbindet Anwendungen und Web Services in praktisch jedem kommerziellen IT System, und bietet vollen JMS (Java Message Service) Unterstützung, einschließlich Publizieren/Abonnieren, an. o Integrierte Unterstützung für Web Services. o Durch auf Eclipse basierende Werkzeuge wie den MQ Explorer kann die Konfiguration des gesamten Messaging Backbone sicher ferngesteuert werden. o Interagiert problemlos mit den Messaging-Diensten des WebSphere Application Servers o Unterstützt den Industriestandard für Verschlüsselungen Secure Sockets Layer (SSL) Die Vor-, bzw. Nachteile: Vorteile: o Austausch von Nachrichten zwischen heterogenen Anwendungen auf verschiedenen Plattformen o Viele Plattformen werden unterstützt o Asynchrone Datenübertragung o Weite Verbreitung und Etablierung Nachteile: o Schlechte Performance bei großen Nachrichtenmengen o Keine integrierten Sicherheitsmechanismen in Form von Zugriffbeschränkungen oder Ähnlichem Begriffsklärung: Nachrichtenorientierte Middleware Nachrichtenorientierte Middleware arbeitet nicht mittels Methoden- oder Funktionsaufrufen, sondern über den Austausch von Nachrichten. Das Nachrichtenformat gibt die eingesetzte Middleware-Software vor. Eine nachrichtenorientierte Middleware kann sowohl synchron als auch asynchron arbeiten. Bei einer asynchronen Variante wird eine Warteschlange verwendet, in die der message-Produzent seine Nachrichten stellt. Ein Konsument kann die Nachrichten dann konsumieren. Vorteile sind u.a. die vollständige Entkopplung von Nachrichtensender und -empfänger und dass Anwendungen auch weiterarbeiten können, wenn Teilkomponenten ausgefallen sind. Eine Architektur für eine nachrichtenorientierte Middleware gibt z.B. JMS (siehe 3.6.2 Java Message Service (JMS)) vor. 1.3 WebSphere Portal Server WebSphere Portal ist ein auf dem Java EE-Standard und Web Services-Standards basierendes Framework (einschließlich Runtime Server, Services, Tools und viele sonstigen Komponenten), das verwendet werden kann, um eine anpassbare Oberfläche für ein Unternehmen zu erstellen – eben ein so genanntes Portal, wobei die Übergänge zu einer gewöhnlichen Homepage im Endeffekt nicht exakt zu ziehen sind. Das Portal vereint Komponenten, Applikationen, Prozesse und Inhalte aus einer Vielzahl von unterschiedlichsten Quellen in einer einheitlichen Präsentationsumgebung, auf die von überall zuge- Seite 5 von 32 Die WebSphere-Plattform griffen werden kann. Bei der Erstellung wird der Entwickler durch Assistenten, Vorlagen und Leitfäden unterstützt, so dass auch Programmierer ohne fundierte Java-Kenntnisse relativ schnell professionelle Portale erstellen können. Das erstellte Portal kann je nach Einsatzgebiet, Sicherheitsanforderungen, Geräteeinstellungen, persönlichen Präferenzen durch administrative Einstellungen angepasst werden. Ebenso können Workflows (dt. Arbeitsabläufe) zur Unterstützung von Geschäftsprozessen definiert werden. Die Inhalte können mit IBMs Web Content Management, welches im WebSphere Portal integriert ist, verwaltet werden. Die folgende Abbildung zeigt ein Beispiel eines Unternehmensportals: Abbildung 1: Unternehmensportal Während WebSphere Portal das Arbeitsumfeld in eine Oberfläche einbindet, bietet es gleichzeitig auch Schnittstellen zur Verbesserung der Anwenderfreundlichkeit an. Zum Beispiel gibt es single sign-on Dienste, so dass Benutzer nach dem Anmeldevorgang ohne erneute Eingabe der Nutzerdaten (UserIDs, Passwörter, ...) auf alle involvierten Anwendungen zugreifen können. Desweiteren kann die Seiten durch ein anpassbares Design auf die jeweilige Zielgruppe zugeschnitten werden. Zahlreiche themenverwandte Produkte, einschließlich WebSphere Voice und der WebSphere Everyplace Products arbeiten mit dem WebSphere Portal Server zusammen, um den Zugriff von fast jedem Betriebssystem aus auf das Portal zu gewährleisten. Selbstverständlich ist dieser Zugriff auch von Mobiltelefonen mit Internetszugang und PDAs aus möglich. Seite 6 von 32 Die WebSphere-Plattform 1.4 WebSphere Process Server Der IBM WebSphere Process Server (WPS) ist eine umfassende SOA-IntegrationsPlattform, die auf dem WebSphere Application Server aufsetzt. Merkmale des WebSphere Process Servers: o Transaktion, Sicherheit, Clustering und Workload-Management: Lösungen mit dem WebSphere Process Server nutzen die WebSphere Application Server-Komponenten und ermöglichen so ein skalierbares und zuverlässiges Integrationsumfeld. o Volle ACID Transaktion Unterstützung: Der WebSphere Process Server unterstützt die ACID-Transaktionen von Geschäftsprozessen - sowohl für einmalige, als auch für zyklisch auftretende Prozesse. o Recovery Manager und die Recovery Console: Im Fall eines Ausfalls während der Ausführung einer Integration, erkennt der Server diesen Fehler und ermöglicht eine Fehlerbehandlung in der Wiederherstellungskonsole. o Kapselung der Geschäftsfunktionen: Die Architektur des WebSphere Process Servers ermöglicht die Kapselung der Funktionen in separaten Modulen, die unabhängig voneinander einem Update unterworfen werden können. Die folgende Abbildung zeigt eine WebSphere Process Server-Plattform: Abbildung 2: WebSphere Process Server Seite 7 von 32 Die WebSphere-Plattform 2 In WebSphere realisierte Konzepte 2.1 Service orientierte Architektur (SOA) Im Folgenden soll das Konzept einer Service Oriented Architectur (SOA) näher erläutert werden. Zusätzlich wird gezeigt, wie die Produkte der IBM WebSphere Familie dieses Konzept unterstützen und implementieren. Um das Verständnis der folgenden Kapitel zu vereinfachen, und Missverständnissen vorzubeugen werden zunächst einige grundlegende Begriffe erklärt: o o o o Service: Eine wiederholbare Geschäftsaufgabe Serviceorienterung: Integration von Geschäftsprozessen als verknüpfte Services und den Ergebnissen dieser Services SOA: Eine IT-Architektur die die Serviceorientierung umsetzt Modulare Anwendung: Eie Reihe verknüpfter und integrierter Services, die einen SOA basierten Geschäftsprozess unterstützen (vgl. [IBM05a]) 2.1.1 Warum SOA „Wie das Internet ist auch SOA in der Lage, die Art und Weise, wie Unternehmen zusammenarbeiten und im Wettbewerb gegeneinander antreten, grundlegend zu verändern.“ [IBM06a] Durch neue und zunehmende Anforderungen wie Firmenzusammenschlüsse, neue gesetzliche Bestimmungen, Compliance Anforderungen oder engere Partner- und Kundenbeziehungen stieg die Anzahl, der in Unternehmen verwendeten Anwendungen, stetig. Diese kontinuierliche Entwicklung hat IT- und Softwaresysteme entstehen lassen, die zunehmend komplexer und schwerer zu warten sind. Dies steht im Gegensatz zu den Anforderungen an eine IT-Landschaft, die unter anderem Kostenreduktion sowie schnelle und einfache Anbindung von Drittsystemen verlangen. Problematischer ist vor allem, dass zur Erfüllung eines Geschäftsprozesses häufig die verschiedensten Anwendungen parallel oder nacheinander verwendet werden müssen. Auf Grund mangelnder Integration greift dabei jede dieser Anwendungen auf einen eigenen Pool von Daten zurück. Dies führt zu redundanter und damit schnell inkonsistenter Datenhaltung. Auch sind Arbeitsabläufe häufig nicht wohl definiert und strukturiert. Das führt dazu, dass Aufgaben mehrfach erledigt werden und unnötige Liegezeiten entstehen. Eine SOA ermöglicht es, all diese Anwendungen und Daten zu integrieren und miteinander zu verbinden. Dadurch können Prozesse zentral organisiert und verwaltet werden. Dies bietet eine größere Flexibilität bei der Geschäftsabwicklung, und bietet die Möglichkeit sich schneller auf veränderte Rahmenbedingungen einzustellen. Obwohl der Aufwand der Einführung einer SOA relativ hoch ist, kann ein schneller ROI erzielt werden, da durch die zentrale Organisation Redundanzen vermieden werden Seite 8 von 32 Die WebSphere-Plattform und die gesteigerte Flexibilität neues Potential bereitstellt. Noch stärker ist dieser Effekt bei Folgeimplementierungen auf Basis der bestehenden SOA Infrastruktur möglich. 2.1.2 Was ist SOA „Eine serviceorientierte Architektur oder SOA ist ein Konzept für die Softwaregestaltung, das Geschäftsanwendungen in einzelne Funktionen oder „Services“ zerlegt [...]“ [IBM06a] Der Begriff „Service Oriented Architecture“ bezeichnet jedoch nicht nur die zugrundeliegende Architektur eines IT Systems, sondern außerdem eine Strategie in der Organisation aller IT-Ressourcen und Anwendungen. Bein dem SOA Ansatz, werden die Funktionen und Daten, die ein System bereitstellt, in verschiedene, geschäftsprozessorientierte Services gruppiert (z.B. „Erstellen eines neuen Kontos“, „Abrufen des Kontostands“). Die verfügbaren Bausteine können dann, je nach Anforderung, auf beliebige Art und Weise kombiniert werden, um neue, komplexe Anwendungen zu gestalten (siehe Abbildung 3: SOA-Architektur). Dabei kann neben internen Services auch auf Angebote von Drittherstellern und Partnern zurückgegriffen werden. Abbildung 3: SOA-Architektur Dieses flexible und plattformunabhängige beschleunigt und vereinfacht die Entwicklung und Integration neuer Funktionen wesentlich. Die Interoperabilität der verschiedenen Services wird dabei durch verschiedene, industrieweite Standards gewährleistet. Man unterscheidet gemeinhin zwischen zwei relevanten Arten: Seite 9 von 32 Die WebSphere-Plattform o o Technologiestandards, wie z.B. SOAP oder WSDL, spezifizieren auf welche Art und Weise die einzelnen Komponenten untereinander kommunizieren und Daten austauschen. Branchenspezifische Normen, wie z.B. HL7 (Gesundheitswesen) oder IFX (Finanzwesen), hingegen legen fest welche Daten übermittelt werden. Dieser modulare Aufbau erweitert den Begriff der Wiederverwendung von der Beseitigung duplizierter Entwicklungsarbeit aus auf die Standardisierung und Wiederverwendung von kompletten Geschäftsprozessen. In dieser Erweiterung liegt heute allgemein anerkannt der wahre Wert der Wiederverwendung (vgl. [IBM06b]). Durch den SOA Ansatz wird weiterhin konsequent das Prinzip der Trennung von Back End und Front End Systemen verfolgt. Back End Systeme umfassen dabei die eigentliche Businesslogik und alle benötigten Daten. Front End Systeme stellen lediglich die durch das Back End bereitgestellten Informationen dar und dienen somit der Interaktion mit dem Benutzer. Die Daten aus dem Backend können so auf einfache Weise durch verschiedene Front End Systeme für unterschiedliche Medien (Monitor, Handy, PDA) bereitgestellt werden. 2.1.3 Der SOA Lebenszyklus Die erstmalige Einführung einer serviceorientierten Architektur ist komplex und muss daher gut geplant werden. Der modulare Aufbau des SOA Prinzips, sowie die gute Skalierbarkeit der beteiligten WebSphere Produkte erlauben eine schrittweise Einführung einer SOA. Es stehen also unterschiedliche Wege offen. Entweder werden neue Prozesse oder Applikationen implementiert, anhand derer die Infrastruktur aufgebaut wird. Auch ist es möglich bestehende Protzesse umzugestalten und auf eine serviceorientierte Architektur zu portieren. Letztlich können bestimmte Services auch von Drittanbietern gemietet werden, so dass prinzipiell kein zusätzliches internes Know-How benötigt wird. Die Einführung und der Betrieb einer SOA lassen sich nach IBM in fünf Phasen unterteilen. Jede dieser Phasen wird dabei durch verschiedene Produkte aus dem IBM (WebSphere) Portfolio unterstützt (vgl. 2.1.4 IBM SOA Foundation). Der SOA Lebenszyklus besteht aus den folgenden Phasen: Seite 10 von 32 Die WebSphere-Plattform Abbildung 4: SOA Lebenszyklus o Modellierung „Die Modellierungsphase beginnt mit dem Sammeln und Analysieren von Geschäftsanforderungen, die dann zum Modellieren, Simulieren und Optimieren der Geschäftsprozesse verwendet werden. Der daraus entstehende Geschäftsprozess wird für die Konzeptionierung zugehöriger Softwareservices und Service-Levels verwendet, um den Geschäftsprozess zu unterstützen. Während dieser Phase wird der Prozess 'Das Modell' dafür verwendet [...] sicherzustellen, dass der Entwurf zu einer Anwendung führen wird, die den definierten Geschäftsanforderungen entspricht.“ [IBM07a] o Assemblierung „Während der Zusammenstellungsphase werden aus vorhandenen Ressourcen Services erstellt, z.B. ERP und Finanzbuchhaltungssysteme, CICS-Anwendungen und andere Lösungen, die in Unternehmen ausgeführt werden. In vielen Fällen kann in einem Archiv nach bereits vorhandenen Services gesucht werden. Wenn es eine benötigte Funktionalität nicht gibt, kann ein Service erstellt und getestet werden, der die für den Geschäftsprozess benötigte Funktionalität bereitstellt. Sobald die erforderlichen Services zur Verfügung stehen, werden sie zusammengestellt, um den Geschäftsprozess zu implementieren.“ [IBM07a] Seite 11 von 32 Die WebSphere-Plattform o Implementierung „Während der Implementierungsphase wird die Laufzeitumgebung konfiguriert und skaliert, um die Service-Level zu erzielen, die für die Geschäftsprozesse erforderlich sind. Nach dem Konfigurieren wird der Geschäftsprozess in eine leistungsfähige, skalierbare und sichere Serviceumgebung implementiert. Die Serviceumgebung wird optimiert, damit unternehmenskritische Geschäftsprozesse zuverlässig ausgeführt werden können und gleichzeitig Flexibilität erzielt werden kann. Diese ist notwendig, um auf dynamische Weise Aktualisierungen vorzunehmen, wenn sich die Geschäftsanforderungen ändern.“ [IBM07a] o Verwaltung „In der Verwaltungsphase geht es darum, die Serviceverfügbarkeit und die Reaktionszeiten herzustellen und aufrechtzuerhalten sowie die zugrunde liegenden Serviceressourcen zu verwalten. Die wesentlichen Leistungsindikatoren werden in Echtzeit überwacht, um die Informationen zu erhalten, die für die Problemvermeidung, isolierung, -diagnose und -behebung erforderlich sind. Informationen über die Echtzeitleistung des Geschäftsprozesses ermöglichen Rückmeldungen an das Geschäftsprozessmodell, um kontinuierliche Verbesserungen zu ermöglichen. Zu dieser Phase gehört auch die Verwaltung der Versionssteuerung für die Services, aus denen Ihre Geschäftsprozesse bestehen.“ [IBM07a] o Governance und Prozesse Governance und Prozesse bildet keine eigentliche Phase im Lebenszyklus, sondern ist die Basis um serviceorientierte Architekturen erfolgreich einzuführen. Dieser Punkt beinhaltet die Vergabe von Entscheidungsrechten in den Bereichen Entwicklung, Verwaltung und Management von Services, sowie die stetige Überwachung von Prozessen. 2.1.4 IBM SOA Foundation „IBM SOA Foundation“ bezeichnet eine „integrierte, auf offenen Standards basierende Zusammenstellung von Software, Best Practices und Mustern“ [IBM05a]. Die Produkte beschränken sich dabei nicht auf die WebSphere Familie, sondern sind eine Zusammenstellung aus allen Bereichen der IBM (Lotus, Tivoli, Rational, WebSphere, FileNet). Die Produkte orientieren sich dabei an einer Referenzarchitektur für SOA Systeme und unterstützen Unternehmen in den verschiedenen Phasen des SOA Lebenszyklus. Seite 12 von 32 Die WebSphere-Plattform Abbildung 5: SOA Referenzarchitektur Die zentrale Vermittlungsstelle, der ESB, wird dabei durch den IBM WebSphere Enterprise Service Bus abgebildet. Dieser stellt den zentralen Zugriffspunkt auf alle im Unternehmen vorhandenen Services dar. Ein Serviceclient verbindet sich nun also nicht mehr direkt mit dem entsprechenden Serviceserver, sondern mit dem ESB, der als Vermittler fungiert. Die Kommunikation zwischen den einzelnen Services wird dabei durch offene Standards wie Java Messaging Serices (JMS) sichergestellt. Der modulare Aufbau ermöglicht eine schrittweise Erweiterung der IT-Landschaft, so dass je nach Anforderung neue Komponenten integriert werden können. Folgende Produkte bieten Unterstützung im SOA Lifecycle: o Modellierung o WebSphere Business Modeler, Rational Software Architect o Assemblierung o WebSphere Integration Developer, Rational Application Developer, Lotus Domino Designer, WebSphere Portlet Factory, Rational Tester for SOA Quality o Implementierung o WebSphere DataPower SOA Appliances, WebSphere Process Server, WebSphere ESB, WebSphere Message Broker, WebSphere Adapters, WebSphere Portal, WebSphere Application Server, WebSphere Extended Deployment, IBM Information Server, WebSphere Business Services Fabric, WebSphere MQ, Lotus Expeditor, FileNet P8 o Verwaltung o Tivoli Access Manager, Tivoli Composite Application Mnager for SOA, Tivoli Federated Identità manager, Tivoli Provisioning Manager, WebSphere Business Monitor Seite 13 von 32 Die WebSphere-Plattform 2.2 Dreischichten-Architektur Die 3-Schichten-Architektur beschreibt einen möglichen Aufbau von modularen ClientServer Anwendungen. Die Anwendung wird dabei in einzelne Komponenten unterteilt, die sich einer der drei Schichten zuordnen lassen. Jede Schicht hat dabei ihren spezifischen Funktionsbzw. Aufgabenbereich. Man unterscheidet zwischen folgenden Schichten: o Präsentationsschicht Komponenten dieser Schicht dienen der Interaktion mit dem Benutzer. Sie zeigen Daten an und reagieren auf bestimmte Benutzerereignisse, wie z.B. einen Mausklick. o Logikschicht Die Logikschicht übernimmt die eigentliche Berechnung der Ergebnisse und führt alle relevanten Operationen aus. o Datenschicht Diese Schicht dient der reinen Datenhaltung und –organisation. Abbildung 6: Dreischichtenmodell Diese logische Trennung führt zu einer besseren Skalierung der Anwendungen, da so die einzelnen Schichten auf unterschiedlichen Knoten implementiert sein können. Dadurch kann eine optimale Laufzeitumgebung geschaffen werden. Die Datenschicht ist z.B. auf einem speziellen Datenbankserver angesiedelt, während die Logikschicht auf einem Anwendungsserver (WebSphere Application Server) ausgeführt wird. Seite 14 von 32 Die WebSphere-Plattform Die Kommunikation zwischen den Schichten wird über festgelegte Schnittstellen gesichert. Dabei ist zu beachten, dass jeweils nur die nebeneinander liegenden Schichten miteinander kommunizieren dürfen. 2.3 Transaktionen Durch den Einsatz verschiedener unternehmensweiter Anwendungen, die alle auf den gleichen Daten operieren, entsteht die Notwendigkeit die Konsistenz dieser Daten zu gewährleisten. Eine Möglichkeit diese Konsistenz zu gewährleisten bietet das Prinzip der Transaktionen. „Eine Transaktion ist eine Aktivitätseinheit, in der viele Aktualisierungen an Ressourcen autark (als unteilbare Arbeitseinheit) ausgeführt werden können, so dass entweder alle Aktualisierungen oder keine Aktualisierung permanent festgeschrieben werden.“ [IBM07b] Dieser aus dem Datenbankbereich bekannte Begriff beschränkt sich dabei nicht nur auf dieses Gebiet, sondern betrachtet alle Operationen auf unternehmensweiten Ressourcen. Unterstützte Ressourcen sind dabei z.B. EIS Systeme, die durch die J2EE Connector Architecture angesprochen werden, über JDBC angesprochenen relationale Datenbanken oder JMS Services. Transaktionen werden nach dem sogenannten ACID-Modell verwendet: o Atomicity – entweder alle oder keine der Operationen werden ausgführt o Consistency – vor und nach einer Transaktion muss sich die resource in einem konsistenten Zustand befinden o Isolation – die einzelnen Operationen einer Transaktion sind von der Außenwelt isoliert. Operationen außerhalb der Transaktionen, können also Daten nie in einem „Zwischenzustand“ sehen. o Durability – Ist eine Transaktion einmalig erfolgreich ausgeführt, ist das Ergebnis dauerhaft gespeichert und kann nicht verloren gehen (z.B. durch einen Systemabsturz) Die Transaktionen werdend dabei von sogenannten Transaktionsmanagern (TM) gesteuert. Man unterscheidet zwei Arten von Transaktionen: „Resource manager local transactions“ (RMLT) bezeichnen Vorgänge an denen ein einzelner TM beteiligt ist. Diese Operationen beschränken sich also auf eine einzelne Ressource (z.B. eine Datenbank). „Globale Transaktionen“ hingegen umfassen Operationen auf mehreren Systemen. Dabei müssen die einzelnen Transaktionsmanager der jeweiligen Ressourcen durch einen globalen Transaktionsmanager koordiniert werden. Der WepSphere Application Server (WAS) stellt einen Transaktionsmanager zur Verfügung, der sowohl globale und lokale Transaktionen koordinieren, als auch als Teil einer globalen Transaktion fungieren kann. Es gibt dabei, je nach Komponente, unterschiedliche Möglichkeiten, wie Transaktionen verwaltet werden. Bei „Container-Managed Transactions“ (CMT) werden die Transaktionen von dem Container (Web-/EJB-Container), in dem die jeweilige Komponente (Servlet, EJB, etc.) ausgeführt wird, verwaltet. Bei „Bean-Managed Transactions“ Seite 15 von 32 Die WebSphere-Plattform (BMT) hingegen, liegt die Verantwortung für die Verwaltung der Transaktionsressourcen bei der ausgeführten Komponente selbst, und damit beim Programmierer. Je nach Komponente stehen unterschiedliche Auswahlmöglichkeiten zur Verfügung. So können Session Beans CMT oder BMT verwenden, während Entity Beans immer CMTs und alle Web-Komponenten immer BMTs verwenden. Seite 16 von 32 Die WebSphere-Plattform 3 WebSphere Application Server 3.1 Überblick Der WebSphere Application Server (WAS) ist zugleich das Flaggschiff innerhalb der WebSphere-Suite und ihr Herzstück, weil die meisten anderen Bestandteile in dem Paket erst durch ihn ihre Bedeutung erlangen und ihren vollen Nutzen zeigen können. Der WAS baut überwiegende auf offenen Standards aus der Java-Welt auf wie J2EE, Enterprise JavaBeans, Webdiensten und der XML-Metasprache. Er läuft in Verbindung mit einer Vielzahl unterschiedlichster Webserver, welche unter anderem wären: o IBM HTTP Server o IIS (Internet Information Services) von Microsoft o Netscape Enterprise Server o Apache HTTP Server (Open-Source) 3.2 Anwendungsserver Ein Anwendungsserver ist ein Server in einer Client-Server-Architektur, auf dem die Anwendungslogik, also die Berechnung von Ergebnissen, ausgeführt wird. Er stellt damit die Laufzeitumgebung für die Logikschicht in einer dreischichtigen Architektur dar. Java Enterprise Edition (JEE) Anwendungsserver, implementieren dabei die Schnittstellen, die in den J2EE Spezifikationen festgelegt sind. Ein standardkonformer Java EE Application Server stellt zwei Container, in denen die unterschiedlichen Komponenten ausgeführt werden, zur Verfügung. 3.3 Webcontainer Der Web Container ist die globale Laufzeitumgebung für alle Web Komponenten einer Java EE Anwendung. Er übernimmt systemweite Aufgaben, wie z.B. das Mapping von URLs zu bestimmten Servlets/JSPs oder das Lifecycle Management von Web Komponenten. Die Zuordnung von Web Ressourcen zu bestimmten URLs wird im Deployment Deskriptor, einer XML-Datei, die die Ausführung der jeweiligen Komponenten innerhalb des Containers konfiguriert, vorgenommen. Wird von einem Client eine URL angefordert, prüft der Container, ob für diese URL ein Servlet oder eine JSP hinterlegt ist. Ist ein Servlet mit dieser URL verbunden, wird, insofern keine Instanz dieser Klasse existiert, ein neues Objekt erstellt. Anschließend wird die Servicemethode des Servlets, die den übermittelten Requesttyp (GET, POST, PUT) bearbeitet, mit den übermittelten Parametern aufgerufen. Während der Ausführung der Methode generiert das Servlet ein HTTP-Response Objekt, welches, wenn die Methode fertig ausgeführt ist, zum Client, der die URL angefordert hat, übermittelt wird. Gewöhnlich enthält diese Objekt HTML Code, der dann im Browser des Anwenders angezeigt wird. Bei WebServices werden anstatt HTTP-Requests XML-Daten über SOAP, ein auf HTTP und XML basierendes Protokoll, transportiert. Eine JSP wird im Seite 17 von 32 Die WebSphere-Plattform Endeffekt wie ein Servlet ausgeführt. Es gibt jedoch zwei Arten, wie die die Umwandlung von JSP zu Servlet geschehen kann. Je nach Container, bzw. Konfiguration, wird die JSP entweder beim Deployen auf den ApplicationServer vorkompiliert oder aber erst beim ersten Aufruf der Ressource in ein Servlet konvertiert. Portlets stellen eine Erweiterung der Servlet Spezifikation dar. Portlets werden, wie Servlets auch in einem speziellen Container, dem Portletcontainer ausgeführt. Dieser Container ist eine Erweiterung des Web-Containers und bietet spezifische Dienste für die Ausführung von Portlets. Ein einzelnes Portlet bildet auf einer Portalseite einen Teil der gesamten Seite. Die Portlets werden in eigenen Bereichen innerhalb der Seite angezeigt und können bei Bedarf untereinander kommunizieren. Portlets stellen gewöhnlich das Front-End einer serviceorientierten Architektur dar. Sie dienen also der Anzeige der Daten, die von verschiedenen Services und modularen Anwendungen bereitgestellt werden. Abbildung 7: Portalseite mit verschiedenen Portlets Seite 18 von 32 Die WebSphere-Plattform 3.4 Enterprise JavaBeans 3.4.1 Über Entity JavaBeans Eine EJB (Enterprise JavaBean) ist eine in Java programmierte standardisierte Komponente, welche Bestandteil einer Anwendung innerhalb eines J2EE-Servers ist. Durch sie können komplexe Unternehmensanwendungen einfacher in modularer Softwarearchitektur entwickelt werden. Eine Enterprise JavaBean soll die Geschäftslogik einer Applikation in einer Komponente kapseln, denn die Idee hinter EJB ist für die bei der Entwicklung Unternehmensanwendung häufig auftretenden Problemstellungen eine Lösung mit möglicht hohem Standardisierungsgrad bereitzustellen. Enterprise JavaBeans sind in EJB-Module eingebettet und auf dem Anwendungsserver installiert. Die Beans sind nicht in der Lage direkte Kommunikationen mit dem Server zu betreiben. Der EJB-Container wirkt als dazwischen liegende Membran. Der EJBContainer stellt den Enterprise JavaBeans zahlreiche Dienste zur Verfügung, insbesondere solche aus den Bereichen Transaktionsüberstützung und Threadverwaltung. Man unterscheidet drei Typen von Enterprise JavaBeans: Entity-Beans, SessionBeans sowie Message-Driven-Beans. 3.4.2 Entity Beans Entity Beans sind für die persistente (nicht-flüchtige) Datenhaltung vorgesehen. Sie brauchen deswegen eine Verbindung zu einer persistenen Speicherform, um die Daten sicher langfristig speichern zu können. Der nicht-flüchtige Speicher kann eine Datenbank, eine andere Anwendung oder auch eine simple Datei sein. Ein Entity Bean kann seine Persistenz entweder selbst sicherstellen, also das Merkmal selbst implementieren, oder die Aufgabe an den EJB-Container delegieren, in dem es enthalten ist. Ein Entity Bean lässt sich durch einen Primärschlüssel identifizieren. Wenn der EJB-Container oder der gesamte Server abstürzt, dann überstehen das Entity Bean und der Primärschlüssel den Absturz trotzdem. [IBM07b] Entity Beans repräsentieren daher solche Daten, welche unbedingt dauerhaft konsistent erhalten bleiben müssen, wie Informationen über Benutzer, Adressen oder Rechnungen. 3.4.3 Session Beans Session Beans spiegeln Abläufe zwischen dem Anwender und dem Softwaresystem wider. Sie enthalten üblicherweise die Anwendungslogik der höheren Ebenen. Jede Methode einer Session-Bean führt meistens einen spezifischen Vorgang auf einer hohen Ebene der Prozessbetrachtung aus. Typische Beispiele zur Verwendung eines Session Beans sind Abmeldevorgang von einer Webseite oder die Übermittlung eines Auftrags. Session Beans machen häufig vom Aufruf der Methoden verschiedener Entity Beans Gebrauch, um Funktion zu erfüllen. Session Beans können in zustandslose (stateless) und zustandsabhängige (stateful) Beans eingeteilt werden. Seite 19 von 32 Die WebSphere-Plattform Zustandsabhängige Session Beans haben eine eigene Identität. Jede Instanz bekommt einen eindeutigen Identifikator zugewiesen, durch den sie von anderen zustandsabhängigen Session Beans unterscheidbar wird. Eine Instanz eines stateful Beans lässt sich einem Client zuordnen und ist nur für ihn bestimmt. Der Client bewirkt Methodenaufrufe innerhalb der Instanz, die miteinander in Beziehung stehen. Deshalb können Session Beans Informationen über einen Methodenaufruf hinaus speichern, sodass sie im Falle eines erneuten Aufrufs derselben oder einer anderen Methode noch zur Verfügung stehen. Folglich können zustandsabhängige Beans innerhalb einer Instanz Informationen speichern. Ein Beispiel für den Einsatz von stateful Beans wäre ein elektronischer Warenkorb, der alle Artikel enthält, welche der Kunde ihm im Verlauf seines Einkaufs hinzugefügt hat. Im Gegensatz dazu kann eine zustandlose Session Beans keinerlei Informationen speichern. Deswegen ist sie von anderen Session Beans nicht unterscheidbar und haben somit keine eigene Identität. Deshalb ist ein stateless Beans sinnvollerweise dann einzusetzen, wenn es von mehreren Clients verwendet werden kann. Sie sind geeignet für solche Operationen, welche sich in einem einzigen Methodenaufruf abhandeln lassen. Aufgrund der nicht vorhandenen instanzspezifischen Variablen, müssen einer Methode einer zustandlosen Beans stets alle benötigten Informationen in Form von Parametern übergeben werden. Zugleich verbrauchen zustandlose Beans aber auch weniger Ressourcen als ihre zustandsabhängigen Pendants. 3.4.4 Message-Driven Beans Sogenannte Message-Driven Beans eröffnen Enterprise JavaBean-Anwendungen eine Möglichkeit zur asynchronen Kommunikation. Die geschieht über die Einbindung des Java Message Services (siehe 3.6.2 Java Message Service (JMS)) in das EJB-Umfeld, damit sind Message-Driven Beans zugleich auch JMS-Clients. Message-Driven Beans sind verteilte Objekte sind ihrem Wesen nach asynchron. Deshalb sind sie für Teilaufgaben in einer Software einzusetzen, die keine Echtzeitanforderungen stellen, die also nicht unmittelbar nicht einer Anforderung erledigt werden müssen. Beispielsweise könnte eine Benachrichtigungsfunktion für neu eingetroffene E-Mail prinzipiell mittels Message-Driven Beans realisiert werden, da der Benutzer zwar benachrichtigt werden will, wenn er online ist und eine neue Nachricht für ihn verfügbar ist, aber die Benachrichtigung ist als nicht zeitkritisch anzusehen und kann im Zweifel auch eine Weile warten. 3.4.5 EJB-Container Im WebSphere Application Server werden alle Enterprise Beans in einem EJBContainer ausgeführt. Diese Container fungieren als Interface zwischen den eigentlichen Beans und dem sie umgebenden Anwendungsserver. Als Laufzeitumgebung vermittelt der Container zwischen den Enterprise JavaBeans, der Geschäftslogik und der übrigen Serverumgebung. Der EJB-Container ist ein Prozess auf dem Server und bedient die Anforderungen, die von den Session-, Entity-, und Message-Driven Beans gestellt werden. Seite 20 von 32 Die WebSphere-Plattform Aufgrund der genannten Eigenschaften wird der EJB-Container auch als Middleware bezeichnet. Durch die Trennung der Vermittlungsschicht von der Benutzeroberfläche nach oben und von der konkreten Datenhaltung (zum Beispiel in Datenbanken) nach unten, wird die Flexibilität stark erhöht. Einer der drei Teile kann bei sauberer Trennung ohne Änderungen an den anderen beiden durch eine andere Software mit dem gleichen Funktionsumfang ausgetauscht werden. Ein EJB-Container kann mehrere EJB-Module beherbergen, wobei in jedem wiederum eine oder mehrere Beans enthalten sein können. Die Enterprise Beans können vom EJB-Container verschiedene Dienstleistungen in Anspruch nehmen. Hierbei wären zunächst Transaktionsfähigkeiten zu nennen. Die Transaktionsverwaltung beinhaltet die in dem Zusammenhang entscheidenden Teilen, nämlich das Starten der Transaktion und ein abschließendes Rollback beziehungsweise Commit, abhängig davon, ob die Transaktion erfolgreich durchgeführt werden konnte oder nicht. Außerdem können Enterprise Bean-Instanzen in unterschiedlichen Pools abgelegt werden, um sie in einen inaktiven Zustand zu versetzen. Durch diese Maßnahme kann der jeweilige Application Server zeitgleich eine größere Anzahl Instanzen von Enterprise Beans im Speicher vorrätig halten, als er es sonst aus Gründen der Performance könnte. Damit besteht eine gewisse Analogie zwischen EJB-Container und der dynamischen und automatischen Verwaltung von virtuellem Speicher in modernen Betriebssystemen. [IBM07b] Bemerkenswert ist aber vor allem, dass er jeweilige EJB-Container für eine automatisierte und zugleich gesicherte Synchronisation der Daten sorgt, die in den Instanzvariablen der Entity Beans gehalten werden und aber auch in einem persistenten Speicher aufbewahrt werden müssen. Seite 21 von 32 Die WebSphere-Plattform 3.5 Web Services Definition: Unter einem Web Service wird gemeinhin eine Software-Anwendung verstanden, welche auf dem Austausch von Daten von mehreren Rechnern zu Rechner beruht. Bei einem Webdienst treten selbständige Software-Agenten also untereinander in Interaktion. Die Kommunikation erfolgt über im Internet übliche Protokolle und mittels Nachrichten, die am XML-Sprachstandard orientiert sind. Wesentliche Aspekte von Web Services sind Plattformunabhängigkeit und die Modularität. Dies ist von dem gewohnten Zugriff auf das Internet mittels der bekannten Webbrowser zu differenzieren. Bisher erfolgte der Zugriff auf Dienst und Informationen, die im Internet angesiedelt sind, in den meisten Fällen über die Webbrowser wie den Internet Explorer von Microsoft, Mozilla oder den Netscape Navigator. Die Idee, die hinter den Web Services steckt, ist nun eine Abkehr von dieser absoluten Fixierung der Anwendungen auf die Webbrowser. Die verteilten Applikationen sollen möglichst ohne einen Webbrowser zugänglich sein. Beispielweise können lokale Anwendungen aktuelle Börsenoder auch Wetterdaten von den entsprechenden im Internet verteilten Webdiensten abrufen und diese dann in Desktop-Software präsentieren, wobei die Informationen auf verschiedene Arten und Weisen aufbereitet werden können wie durch grafische Diagramme. Es geht also primär darum, wie verschiedene Applikationen über die Grenzen von Netzwerken, Betriebssystemen und Softwarestandards hinweg Daten automatisiert austauschen und sich gegenseitig Dienstleistungen zur Verfügungen stellen können. Im Ideal lässt sich beispielsweise der gleiche Webdienst wie die Buchung einer Reise über ein Reisebüro von verschiedenen Geräten wie PDA oder Desktoprechner aus aufrufen, wo die jeweiligen Anwendungen auf den Geräten, die den Webdienst in Anspruch nehmen, ganz verschieden sein können. Der Dienst des Reisebüros zur Urlaubsplanung nimmt seinerseits wiederum Verbindung mit Buchungsdiensten verschiedener Hotelketten auf und kommuniziert mit dem Ticketdienst einer Fluggesellschaft, um einen geeigneten Flug zu finden und gegebenenfalls für den Kunden zu buchen. Die WebSphere-Familie unterstützt den SOA-Ansatz (Serviceorientierte Architektur). Web Services sind im Sinne einer SOA zu erstellen. Entsprechend sind die betriebwirtschaftlich gebotene enge Anpassung an die Geschäftsprozesse und ein Vorgehen in der Softwareentwicklung nach dem Paradigma der Objektorientierung wichtige Gesichtspunkte, die zu beachten sind. Weitere Ziele dieses Konzeptes sind Flexibilität, Wiederverwendbarkeit und eine einfache und reibungslose Verteilbarkeit der SoftwareTeilkomponenten auf verschiedene Systeme. Die wichtige Technik, auf der die Web Services aufbauen, ist die XML-Metasprache. Hiermit werden sowohl die Anfragen beziehungsweise Eingabedaten vom ClientProgramm zum Server übertragen, der den Web Service bereitstellt, und umgekehrt werden damit dann auch die Ausgabedaten, also das Ergebnis der Dienstleistung, zum Client-Programm zurückgesandt. Die WSDL (Web Service Description Language) nutzt ebenfalls die XML-Notation. Sie dient der Beschreibung der vom Web Service angebotenen Dienstmerkmale wie Funktionen, Schnittstellen und Datentypen. Seite 22 von 32 Die WebSphere-Plattform Darüber hinaus enthält ein Web Service zwei weitere Kernbestandteile, die ebenfalls auf der XML-Technik basieren. Da wäre zum einen UDDI (Universal Description Discovery and Integration). Das Protokoll dient der Veröffentlichung beziehungsweise dem Auffinden von Metadaten über dynamische Webdienste. Hierbei handelt es sich letzten Endes um einen Verzeichnisdienst, der Dienste weltweit bekannt und somit verfügbar macht. Die andere wesentliche Komponente ist das Protokoll SOAP (Simple Object Access Protocol), das zur Übermittlung von XML-basierten Nachrichten über Netzwerke dient und folglich textbasiert arbeitet. Es ist ein RPC-Protokoll, das in die Anwendungsschicht gehört und üblicherweise auf das Transportprotokoll HTTP aufsetzt, wenn auch andere Transportprotokolle wie FTP oder SMTP möglich sind. SOAP stellt Regeln für den Prozeduraufruf auf entfernten Systemen (Remote Procedure Call) und für den Aufbau der SOAP-Nachrichtenen auf. Über die weitergehende Semantik anwendungsspezifische Informationen werden indes keine Aussagen getroffen. SOAP kann daher am besten als ein Framework zur Fernübermittlung von anwendungsspezifischen Daten beschrieben werden. Die Vorteile von SOAP liegen in seinen vielfältigen Verwendungsmöglichkeiten, bedingt durch die Offenheit des Standards, und darin, dass es wegen der Verwendung von HTTP als Transportprotokoll im Allgemeinen eine reibungslose und einfache Kommunikation auch durch Proxy-Server und Firewalls hindurch ermöglicht. Der größte Nachteil ist wohl darin zu sehen, dass es durch des Verwendung des XML-Formats, das vergleichsweise üppige Mengen an Textdaten produziert, signifikant weniger performant ist als andere Mechanismen wie CORBA. In der Architektur von Webdiensten lassen sich drei verschiedene Servicerollen unterscheiden. Jede Komponente kann dabei eine oder mehrere dieser Rolle spielen. Die Rollen sind: o Service-Broker o Service-Client o Service-Provider Der Service-Broker fungiert als Registrierungsstelle von veröffentlichten Webdiensten, die in ihm kategorisierte hinterlegt werden können. Er stellt Suchdienste bereit, so ist beispielsweise UDDI der Service-Broker für Web Services, die in der WDSL beschrieben sind. Der Service-Client verwendet die Dienstleistung des Service-Brokers, um den benötigten durch skizzierten WSDL Webdienst zu finden und eine Verbindung zu jenem aufzubauen. Der Service-Provider ist schließlich die Stelle, die den Web Service zu Verfügung stellt und durch Registrierung beim Service-Broker die globale Verfügbarkeit bewirkt. [IBM07b] Seite 23 von 32 Die WebSphere-Plattform Service veröffentlichen ServiceProvider ServiceBroker Anfrage / Antwort Suchen Finden ServiceClient Abbildung 8: Servicerollen 3.6 Kommunikation & Datenzugriff 3.6.1 Service Integration Bus (SIB) Unter einem Bus versteht man in diesem Falle eine miteinander kommunizierende Gruppe von Servern und Server-Clustern. Ein Service Integration Bus, wie der WebSphere Application Server ihn anbietet, stellt das Messaging-System (Nachrichtensystem) für JMS-Anwendungen zur Verfügung. Sobald die Verbindung einer Anwendung zum Bus aufgebaut ist, wird er zu einer logischen Einheit und abstrahiert als solche die Nachrichtenübermittlung von der konkreten technischen und physikalischen Bustopologie. Die zugrunde liegende Netzwerkebenen sind daher gesondert zu konfigurieren. Ein Service Integration Bus stellt die folgenden Funktionalitäten bereit, die einen Mehrwert darstellen. o Jede Applikation kann Botschaften an jede andere Anwendung verschicken. Die Applikation sendet ihre abgehenden Nachrichten an eine sogenannte Destination und die andere empfangende Applikation bezieht sie von dieser Stelle. o Die Erzeuger-Anwendung, welche neue Nachrichten generiert, kann die Nachrichten für eine Destination einfach erstellen, ohne sich um die Komponente kümmern zu müssen, welche der Erzeuger verwendet, um auf den Bus zuzugreifen. o Die Konsumenten-Anwendung, welche die Nachrichten empfängt und verarbeitet, kann die Nachrichten, die von einer bestimmten Destination stammen einfach konsumieren, sofern die Destination aktuell verfügbar ist, ohne sich um den konkreten Buszugriff kümmern zu müssen. Der Service Integration Bus ermöglicht den asynchronen Versand von Botschaften, selbst in den Fällen, wenn die Destination nicht verfügbar ist oder wenn die Konsumenten-Anwendung gerade nicht ausgeführt wird. Seite 24 von 32 Die WebSphere-Plattform 3.6.2 Java Message Service (JMS) Der Java Message Serivce, abgekürzt JMS, ist ein Standard für einen Nachrichtendienst, der auf der Java-Plattform und der J2EE-Spezifikation aufbaut, um Nachriten zwischen zwei oder mehreren Clients auszutauschen. J2EE beschreibt eine bestimmte Softwarearchitektur für Java-Anwendungen, wobei das Transaktionskonzept im Mittelpunkt steht. Der IBM WebSphere Application Server unterstützt die JMSProgrammierschnittstelle zur Kommunikation mittels asynchroner Nachrichten. Um das JMS-Interface nutzen zu können, bedarf es eines JMS-Providers, welcher die Verwaltung der Sessions und Warteschlangen übernimmt. Es existiert ein Vielzahl verschiedener JMS-Provider in Form von Open Source-Projekten einerseits und kommerziellen Produkten andererseits. Frei verfügbar sind zum Beispiel ActiveMQ als Teil des Apache Servers oder JBoss Messaging von Red Hat. Kommerzielle Implementierungen sind andererseits Oracle Advanced Queueing, Sun Java System Message Queue oder eben das zur WebSphere-Produktfamilie gehörende WebSphere MQ. [WIKI07b] Das JMS API unterstützt zum Nachrichtenversand zwei verschiedene Betriebsmodi: message queues und das publish and subscribe-Model. Message queues sind Warteschlangen für Nachrichten, die zu einer Nachrichtenübermittlung von Punkt zu Punkt führen. Hierbei gibt es einen Verbraucher, der die Nachrichten verarbeitet, die er aus einer Warteschlange abholt, und einen Erzeuger, der sie nach der Generierung in eine Warteschlange einreiht. Die Kommunikation zwischen dem Erzeuger und dem Verbraucher der Nachricht läuft asynchron. Der Verbraucher braucht nicht aktiv, während der Erzeugt die Nachricht generiert. Genauso wenig ist es vonnöten, dass der Erzeuger betriebsbereit ist, wenn der Verbraucher die empfangene Botschaft verarbeitet. Außerdem wir der Empfang jeder Botschaft vom Empfänger quittiert. Das publish and subscribe-Verfahren läuft anders ab. Die Nachrichten werden in dem Falle nicht an einen bestimmten Empfänger adressiert. Vielmehr werden die Botschaften unter Angabe eines bestimmten Themas (message topic) verschickt. Einer oder mehrere Empfänger können sich also beim JMS Provider für ein bestimmtes Thema registrieren und bekommen danach alle Botschaften zugestellt, die zu diesem Thema geschickt werden, und werden damit zum Subcriber. Die Versender (publisher) der Botschaften wissen hierbei nicht von den Empfängern. Ihnen ist nicht einmal bekannt, ob die Botschaften zu einem bestimmten Thema überhaupt von irgendjemandem gelesen werden. Das Ganze gleicht also ungefähr einem anonymen Schwarzen Brett, das in verschiedene Rubriken aufgeteilt ist. [IBM07b] In JMS lassen sich also die folgenden bereits erwähnten Bestandteile identifizieren o provider: stellt die Implementierung des JMS-Interfaces bereit o client: ein Prozess, JMS Messages erzeugt oder empfängt o producer: ein Client, der Nachrichten generiert und versendet o consumer: ein Client, der die Nachrichten empfängt o message: das Nachrichtenobjekt, das die zwischen den Clients zu übermittelnden Daten enthält o queue: die Warteschlange, die die Nachrichten in der Reihenfolge an den consumer zustellt, in der sie der producer verschickt hat. Seite 25 von 32 Die WebSphere-Plattform 3.6.3 WebSphere MQ als JMS-Provider WebSphere MQ ist IBMs Variante einer plattformunabhängigen Message Orientated Middleware, abgekürzt MOM, worunter man eine Software versteht, welche die asynchrone Nachrichtenübertragung zwischen verschiedenen Anwendungen bewerkstelligt, welche üblicherweise nicht nur auf verschiedene Prozesse sondern auch verschiedene Rechner verteilt sind. WebSphere MQ war ehemals unter dem Namen MQSeries bekannt und ist inzwischen in das WebSphere-Produktpaket integriert worden. WebSphere MQ ist also der WebSphere-eigene JMS-Provider. Durch das Prinzip der Übertragung der Nachrichten über eine MOM, welche die Nachrichten eine Warteschlange einreiht und sie dann aus dieser heraus an den oder die Empfänger entsprechend dem FIFO-Prinzip zustellt, können sich Applikationen gegenseitig Informationen übermitteln, ohne dass eine direkte Verbindung zwischen bestehen müsste. Das Versenden der Nachrichten kann über Plattformgrenzen hinweg geschehen und damit gut geeignet für heterogene Rechnersysteme in einem Netzwerk. Außerdem stellt die MOM jede Nachricht, die in die Warteschlange geschoben wird, genau einmal an den Empfänger zu und das unabhängig von vorübergehenden Verbindungsproblemen und auch wenn die Zielapplikation im Moment der Nachrichtenerzeugung gar nicht ausgeführt wird. WebSphere MQ sollte allerdings nicht beispielsweise mit einer Art von E-MailClientprogramm gleichgesetzt werden. Im Gegensatz zu einem gewöhnlichen E-MailClient ist WebSphere MQ nämlich selbst für die gesicherte Zustellung der Nachricht verantwortlich und schickt sie nicht einfach weiter an den nächsten Server in der Hoffnung, dass das Ziel hoffentlich gewunden und die Nachricht korrekt zugestellt werde. 3.7 Naming & Verzeichnisdienst 3.7.1 Naming & Namespace Naming bedeutet, dass Softwareobjekten eindeutige Bezeichner zugeordnet werden, sodass andere Anwendungen unter Verwendung des Bezeichners Referenzen zum Objekt herstellen können. Die Objekte werden hierbei in ein hierarchisches Konstrukt, genannt Namespace oder Namensraum, eingebunden, welches die Beziehungen zueinander widerspiegelt. Ein Namespace ist folglich ein abstrakter Behälter über einer logisch zusammenhängende Menge von einzelnen, jeweils einzigartigen und untereinander unterscheidbaren Identifikatoren. Der Identifikator muss nur innerhalb eines Namespaces eindeutig sein. Er kann sehr wohl auch in anderen Namensräumen vorhanden sein und sogar anders definiert sein, also dort eine neue Bedeutung haben. Deshalb ist das Konzept es Namespaces auch in modernen Programmiersprachen wie Java oder C++ zu finden. Ein Verzeichnis im Dateisystem lässt sich übrigens auch als Namensraum deuten, da alle enthaltenen Dateien über einen Namen identifizierbar sein müssen und nur eine Datei einen bestimmten Namen haben darf. Die Hierarchie des Namespaces ist üblicherweise eine Baumstruktur. Alle Objekte in dem Baum, die nicht Blätter sind, werden als Kontexte bezeichnet. Operationen auf ei- Seite 26 von 32 Die WebSphere-Plattform nem solchen Namespace wie Suchen (Lookup) oder Binden (Bind) werden in diesen Kontexten durchgeführt. Binden bedeutet, dass man das Objekt, das sich hinter einem Namen verbirgt, von nun an relativ zu einem anderen Objekt setzt. In der Dateisystemanalogie bedeutet dieses, dass man eine Datei (oder ein Verzeichnis) in ein Verzeichnis hinein verschiebt und die Datei dadurch in eine relative Abhängigkeit zum übergeordneten Verzeichnis zwingt. Alle Operationen starten beim sogenannten Ausgangskontext, worunter man den Startpunkt des Namensraumes, sprich die Wurzel des Baumes, versteht. 3.7.2 Verzeichnisdienst Der Naming Service ist eine einfache Implementierung eines Verzeichnisdienstes und löst ohne Namespaces die Namen von Netzwerkressourcen in die konkreten Netzwerkadressen auf. Die primäre Aufgabe eines Namensdienstes ist es Namen auf die dazugehörigen Objekte abzubilden. Benutzer und Prozesse brauchen dadurch die physischen Netzwerkadressen der Ressourcen nicht zu speichern. Zugleich muss eine Netzwerkressource, die eine neue Adresse bekommen hat, diese Änderung nur einem einzigen Dienst mitzuteilen. Der Domain Name Service (DNS) ist zum Beispiel ein Verzeichnisdienst, denn er löst URL-Namen in IP-Adressen (Objekte) auf. Ein Verzeichnisdienst (Directory Service) baut auf den beschriebenen Namespaces auf. Er verwaltet den Namensraum, erlaubt Modifikationen wie das Hinzufügen von neuen Objekten, das Löschen oder Bearbeiten und Suchfunktionen auf den darin liegenden Softwareobjekten. Der Dienst stellt also ein Stück Software dar, das Informationen über Benutzer, Rechner und Netzwerkressourcen strukturiert speichert. Deswegen agiert der Directory Service als Abstraktionsschicht, welche die freigegebenen technischen Ressourcen für den Anwender generalisiert darstellt. Der Zugriff auf Ressourcen lässt sich damit steuern und reglementieren. Der Verzeichnisdienst stellt die zentrale Authorität des jeweiligen Namensraumes dar. Er sollte nicht mit der Datenhaltung selbst erwechselt werden, welche zweckmäßig mittels einer Datenbank gewährleistet wird. Die Datenbank hält die Objekte, welche der Verzeichnisdienst verwaltet. Von der Warte aus betrachtet, setzt der Directory Service also quasi auf der Datenbank auf beziehungsweise ist ihr übergeordnet. Es wird davon ausgegangen, dass die Objekte aus Verzeichnisdiensten öfter gelesen werden, als sie verändert werden. Daher sind die Zugriffszeiten dieser Dienst auf lesende hin Zugriffe optimiert worden, während Schreibzugriffe deutlich länger dauern können. [IBM07b] 3.7.3 JNDI Das JNDI (Java Naming and Directory Interface) ist dem Namen nach eine API für Namens- und Verzeichnisdienst in Java. Eine Schnittstelle ist das JNDI deswegen, weil es von der konkreten Implementierung abstrahierte Funktionen bereitstellt. JNDI legt ein SPI (Service Provider Interface) fest. Das SPI ist auf der Seite der Implementierung ungefähr das Äquivalent zur API auf der Ebene der generalisierten Beschreibung der Funktionen. Seite 27 von 32 Die WebSphere-Plattform Anwendung API SPI (Service Provider Interface) Implementierung Abbildung 9: JNDI Die Hauptanwendung des JNDI-API liegt im Umfeld von Java EE-Anwendungen, um verteilte Netzwerkobjekte zentral zu registrieren und dadurch anderen JavaApplikationen per Java RMI (Remote Method invocation), also einem Fernaufruf der Methode (RPC), verfügbar zu machen. JNDI umfasst kein internes Sicherheitsmodell oder eine Sicherheitsschnittstelle, welche den Zugriff auf den Naming bzw. Directory Service überwachen würde. Sicherheitskritische Abläufe wie die Authentifizierung beim Anmeldeprozess Zugriffe, welche in den Namensdienst selbst steuernd eingreifen, müssen über separate Dienst abgewickelt werden. Durch die Namensauflösung selbst kann der Directory Service in gewissem Sinne bestimmte Anwendungen von sicherheitskritischen Prozessen fernhalten, was aber nur als unzureichende Maßnahme anzusehen ist, denn an sich stellt er keine Sicherheitsmechanismen bereit. Der WebSphere Application Server von IBM enthält einen Server für den Namensdienst, welcher auf der beschriebenen JNDI-Schnittstelle beruht. 3.8 Sicherheitsarchitektur WebSphere unterscheidet zwischen der Verwaltungssicherheit und der Anwendungssicherheit. Die Verwaltungssicherheit umfasst die Benutzerverwaltung, die Sicherheit der Administrationskonsole und die Authentifizierung. Bei der Anwendungssicherheit geht es um die Rechte der Applikationen gegenüber ihrer Umwelt. Dadurch können Anwendung gezielt von ihrer Umgebung isoliert werden. 3.8.1 Authentifizierung Authentifizierung ist allgemein gesprochen ein Prozess, der sicherstellen soll, dass etwas so ist wie angegeben beziehungsweise jemand, derjenige ist, der er vorgibt zu sein. Es sind hierzu jeweils entsprechende Prozessschritte definiert, welche die Echtheit der Angaben gewährleisten sollten. Entscheidende Bedeutung für die Sicherheitsarchitektur erlangt ein Authentifizierungsverfahren dadurch, dass die Berechtigungen an die Identitäten gebunden sind. Deshalb muss sich das System darauf verlassen können, dass die Nachweise der Authentifizierungsinstanz über ein Person bzw. einen Prozess nicht durch einen Dritten kompromittiert werden können. [IBM07b] Seite 28 von 32 Die WebSphere-Plattform Der WebSphere Application Server bietet zwei Authentifizierungsmechanismen an, nämlich LTPA (Lightweight Third Party Authentification) und SWAM (SimpleWebSphere Authentication mechanism). Das letztere Verfahren ist wie der Name schon andeutet ein Spezifikum von WebSphere, dessen Benutzung indes nicht weiter empfohlen wird, da es als veraltet („deprecated“) gilt. Daher kann das LTPA-Verfahren als Standard in den aktuellen Versionen von WebSphere gelten. Der Vorteil von LTPA ist darin zu sehen, dass man nach erfolgreicher Einwahl ein LTPA-Token erhält, welches die jeweilige Berechtigung zum Zugriff ausweist. Der Benutzer-Login behält damit über die Grenzen des einzelnen physikalischen Servers hinaus Gültigkeit für alle angegliederten Server, das heißt solche, die zur gleichen Authentifizierungsstelle gehören. Man spricht hier auch von einer SSO-Umgebung (Single sign-on), eben weil (pro Session) eine einmalige Anmeldung genügt. Das Token wird konkret durch ein Session Cookie im Browser realisiert. Die Lebensdauer solcher Cookies ist auf die aktuelle Session beschränkt. Die Authentifizierung schützt zwar die Server gegen unbefugte Zugriffe von außen, allerdings wird hiermit keine Gewähr dafür übernommen, dass die Daten geheim und unverändert zum Rechner des Benutzers gelangen. Dafür bedarf es einer verschlüsselten Kommunikation, was angeraten ist, damit das sicherheitsrelevante Token auf der Übertragungsstrecke nicht abgefangen werden kann. 3.8.2 SSL SSL (Secure Sockets Layer) ist ein kryptographisches Protokoll, das für die Datenübertragung über nicht vertrauenswürdige Netzwerke, wie es das Internet darstellt, entwickelt wurde. Dem SSL-Verschlüsselungsprotokoll lässt sich im standardisierten OSISchichtenmodell nicht so eindeutig eine Ebene zuweisen wie beispielsweise TCP. Es arbeitet auf jeden Fall oberhalb der Transportschicht (z.B. TCP), aber unterhalb der Anwendungsebene (z.B. HTTP oder FTP). Anwendungsschicht SSL Transportschicht Vermittlungsschicht Sicherungsschicht Physikalische Schicht Abbildung 10: SSL im OSI-Modell Seite 29 von 32 Die WebSphere-Plattform SSL bietet den DES, Triple DES und AES also symmetrische Verschlüsselungsverfahren an. Zwar gilt selbst die älteste Variante von den dreien, der DES (Data Encryption Standard), bis heute als nicht kompromittiert, weil keine ernsthafte Schwachstelle gefunden wurde, allerdings kann er trotzdem nicht mehr als sicher genug angesehen werden, denn aufgrund seiner verhältnismäßig kurzen Schlüssellänge kann durch die in den vergangen Jahrzehnten stark gestiegene Rechenleistung mittels einen Brute-Force-Angriff zu schnell gebrochen werden. Triple DES ist eine Variante, die nach wie vor als für die Praxis sicher gilt und auch zum Beispiel für Bankenanwendungen benutzt wird. Der AES (Advanced Encryption Standard) ist aber der offizielle Nachfolger des DES. Die SSL-Pakete werden hinsichtlich Authentizität (Echtheit) und Integrität durch die Verwendung geeigneter Hash-Verfahren wie MD5 oder SHA abgesichert. Der Aufbau einer Datenübertragung mittels SSL beginnt mit dem sogenannten Sicherheitshandshake. Dabei handeln die beiden Seiten den zu verwendenen Verschlüsselungsalgorithmus und den einmaligen nur für die aktuelle Session gültigen symmetrischen Schlüssel aus. Die beiden Seiten können sich optional mit einem Zertifikat jeweils gegenüber dem anderen Teilnehmer identifizieren. Nur damit lässt sich letzten Endes die Identität des Gegenübers verlässlich klären. Ohne die Authentifizierung anhand von Zertifikaten ist SSL anfällig gegenüber einem Man-in-the-middle-Angriff. [WIKI07c] Wenn der Angreifer vor der Initialisierung von SSL zur Stelle ist, kann er beide Seiten narren und unbemerkt als Mittelsmann zwischen ihnen agieren. HTTPS ist das Protokoll, das HTTP mit SSL kombiniert. In dieser Form wird SSL am häufigsten benutzt und das ist auch die Variante, in der es WebSphere verwendet. Seite 30 von 32 Die WebSphere-Plattform 4 Abbildungsverzeichnis Abbildung 1: Unternehmensportal ................................................................................................... 6 Abbildung 2: WebSphere Process Server ........................................................................................ 7 Abbildung 3: SOA-Architektur ........................................................................................................ 9 Abbildung 4: SOA Lebenszyklus................................................................................................... 11 Abbildung 5: SOA Referenzarchitektur ......................................................................................... 13 Abbildung 6: Dreischichtenmodell ................................................................................................ 14 Abbildung 7: Portalseite mit verschiedenen Portlets...................................................................... 18 Abbildung 8: Servicerollen ............................................................................................................ 24 Abbildung 9: JNDI......................................................................................................................... 28 Abbildung 10: SSL im OSI-Modell ............................................................................................... 29 Seite 31 von 32 Die WebSphere-Plattform 5 Quellen [IBM05a] [IBM05b] [IBM06a] [IBM06b] [IBM07a] [IBM07b] [Fer05] [WIKI07a] [WIKI07b] [WIKI07c] IBM SOA Foundation: Ihr Einstieg in eine serviceorientierte Architektur; IBM, September 2005 IBM’s SOA Foundation: An Architectual Introduction and Overview, IBM, November 2005 Neue Wege der Geschäftsabwicklung; IBM Institute for Business Value, Oktober 2006 Fünf SOA Projekte, die sich in sechs Monaten bezahlt machen können.; IBM, Oktober 2006 SOA für IT-Experten, IBM Homepage, IBM, Stand 29.11.2007, http://www-306.ibm.com/software/de/solutions/soa/itleaders.html IBM Information Center, IBM Homepage, IBM, Stand 29.11.2007, http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp Service-oriented architecture: Programming model and product architecture, D.F. Ferguson, M.L. Stockton, IBM Systems Journal Vol. 44, No. 4, 2005 Dreischichtige Architektur, Wikipedia Homepage, Stand 29.11.2007, http://de.wikipedia.org/wiki/Dreischichtige_Architektur Java Message Service, Wikipedia Homepage, Stand 28.11.2007, http://de.wikipedia.org/wiki/Java_Message_Service Transport Layer Security, Wikipedia Homepage, Stand 28.11.2007, http://de.wikipedia.org/wiki/Transport_Layer_Security Seite 32 von 32