Upload
ledang
View
213
Download
1
Embed Size (px)
Citation preview
KONFERENZ
Donnerstag, 11. November 200411h00, Variohalle 1
Lotus Notes Integration mit Oracle Applicationsserver
Arne Brüning, Christian KühneORACLE Deutschland GmbH, Hamburg
Schlüsselworte:
Lotus Notes, Oracle Database, Oracle Application Server, OracleAS Portal,Oracle JDeveloper, Oracle Application Development Framework, JSR-227 DataBinding, JSR-168
Zusammenfassung
Dieser Vortrag gibt die Erfahrungen aus einem Oracle presales Projekt wieder.Die Anbieter wurden aufgefordert, zu demonstrieren wie man eine Anwendungauf einem J2EE-konformen Application Server erstellt, die gleichzeitig auf eineOracle und eine Lotus Notes Datenbank zugreift. Eine Integration der Lösungin ein Portal-Framework sollte möglich sein, hierbei war der Zugriff auf LotusMail und Kalender Funktionalität aus dem Portal notwendig.
Da das Thema für das Projektteam neu war, Kenntnisse über Lotus Notes warenbislang nicht vorhanden, wurden viele neue Erfahrungen über die Möglichkeitder Anbindung von Lotus Notes an J2EE-konforme Anwendungen gemacht.Leider waren nicht alle Erfahrungen positv. Daher soll dieser Vortrag aufzeigen,welche Möglichkeiten der Anbindung existieren, aber auch, welche Wege indie Sackgasse führen.
Gelöst wurde die Aufgabe letztendlich durch zwei parallele Ansätze:• Einsatz der für Lotus Notes vorhandenen Standard-Portles sowie der Modifi-
kation eines generischen Lotus Notes Portlets zusammen mit Oracle Portal• Einsatz der Oracle-Implementierung des Java Specification Request JSR-227:
„A Standard Data Binding & Data Access Facility for J2EE” im Oracle Appli-cation Development Framework (ADF)
Einleitung
Häufig besteht das Problem, bestehende Lotus Notes Anwendungen in einemoderne Web-, J2EE- und/oder Portalarchitektur zu überführen. Zur Inte-gration von Lotus Notes gibt es verschiedene Ansätze wie z.B. der Einsatz von
17. Deutsche ORACLE-Anwenderkonferenz
Standard-Portlets oder die Erstellung von neuen J2EE-Anwendungen mit demJDeveloper und dem Oracle Application Development Framework (ADF) unterVerwendung des Lotus Notes Datacontrols. Die verschiedenen Ansätze werdenhier vorgestellt, gegeneinander abgewogen und z.T. life gezeigt.
Typisches Environment bei mehreren Kunden• Gewachsene, meist inhomogene Infrastruktur• Eindeutiges, klares Commitment zu J2EE als Zukunftsstandard• Vorhandene Datenbestände in Domino, die auf Grund ihrer Integration in
Betriebsabläufe nicht kurzfristig migrierbar sind
In der Praxis bedeutet dies, daß in den J2EE-konformen Applikationen lesendund schreibend auf in Lotus vorhandene Datenbestände zugegriffen werdenmuß. Dieser Vortrag gibt die Erfahrungen aus einer Analyse der technischenMöglichkeiten zur Integration wieder.
„Datenbank“-Standardansatz: • frameworkunterstützte Entwicklung gegen Oracle DB• Daten aber physisch in „externer DB“• Connectivity via Database Link (hier: DBLink zwischen Oracle und Lotus)
Vorteil dieser Lösung ist die Transparenz der Lotus DB, d.h. die Applikationsieht nur die Master-DB (Oracle), obwohl die Daten physisch in Lotus abgelegtwerden.Die Funktionalität dieses Ansatzes wird entscheidend von der Qualität desODBC-Treibers bestimmt. Für nahezu alle relationalen Datenbanken liegenentsprechende Treiber vor; der aktuelle für Lotus vorhandene ODBC-Treiberhat jedoch entscheidene funktionale Einschränkungen, die einer produktivenNutzung entgegenstehen.
„J2EE“-Standardansatz:• JDBC-Treiber
Dieser Ansatz ermöglicht die Entwicklung nach dem RAD-Prinzip, da allemodernen J2EE-Entwicklungsumgebungen ein auf JDBC-besierendes Frame-work zur Verfügung stellen.Die Funktionalität dieses Ansatzes wird entscheidend von der Qualität desJDBC-Treibers bestimmt. Für nahezu alle relationalen Datenbanken liegen ent-sprechende Treiber vor; der aktuelle für Lotus vorhandene JDBC-Treiber hatjedoch entscheidene funktionale Einschränkungen, die einer produktiven Nut-zung entgegenstehen.
Dieser Ansatz doppelt die in Lotus gespeicherten Daten in eine Oracle-DB,damit die Applikation ausschließlich gegen die Oracle-DB arbeiten kann.
Ap
pli
cati
on
Se
rver
KONFERENZ
Vorteil dieser Lösung ist die Transparenz der Lotus DB, d.h. die Applikationsieht nur die Oracle-DB, obwohl die Master-Daten physisch in Lotus abgelegtwerden. Dieser Ansatz wurde bereits von einem Partner erfolgreich in Projek-ten realisiert.
Probleme können auftreten, wenn auf beiden Datenbeständen unabhängigvoneinader Änderungen vorgenommen werden können.Darüberhinaus muß die Aufdatierung der Slave-Daten administriert werden.
Eine Variante besteht darin, die Daten online in Lotus zurückzuschreiben, dader untersuchte ODBC-Treiber in dieser Richtung für alle untersuchten funk-tionalen Testfälle arbeitete. Daraus sind keine Ausagen über einen produktivenEinsatz ableitbar.
„Lotus-nativer“-AnsatzAlternativ zu den vorgestellten Treibern steht ein natives Interface in Formeiner Java-Bibliothek zur Verfügung (NCSO – Notes Client Side Objects). DieseKlassen können in beliebige Java-Applikationen eingebunden werden. Sieermöglichen den Zugriff auf Lotus via DIIOP (Domino Internet Inter ObjectRequest Broker Protocol) über HTTP.
Für die weitverbreiteten Lotus-Anwendungen (eMail, Kalender, ToDo, Kon-takte) stehen fertige Portlets als download auf portalstudio.oracle.com (Teil desOracle Technology Networks) zur Verfügung.Sie ermöglichen im Umfeld eines Portals den direkten Zugriff auf die entspre-chenden Datenbestände in Lotus.Für diese Applikationen ist dies die einfachste Möglichkeit der Integration.
Abb. 6: „fertige“ Lotus-Portlets
17. Deutsche ORACLE-Anwenderkonferenz
Oracle Portal Integration Solutions stellt einen Provider mit vier Portlets zurIntegration der Mail-, Kalender-, Kontakt- und ToDo-Informationen aus dempersönlichen Domino-Postfach des Anwenders.Der Provider nutzt als Protokoll zur Kommunikation mit Lotus eine Domino-spezifische iiop-Erweiterung (diiop – Domino iiop) und http; deshalb müssendie entsprechenden Prozesse auf dem DominoServer laufen (diiop und http).Die mit dem Lotus-Provider ausgelieferten Portlets (eMail, Kalender, To-Do,Kontakte) greifen auf die User-spezifische Mail-Datenbank mail/<user>.nsf zu. Dabei kümmert sich der Provider in erster Linie um die Kommunikation mitdem Portal (runtime), dem Portlet-Repository, dem SSO-Server und demDomino-Server.Die Portlets definieren, welche Daten von Domino zu holen sind und wie diesedargestellt werden sollen (rendering). Alle Verwaltungsaufgaben werden vomProvider übernommen, der fertig vorliegt.Der Zugriff auf die Domino-Mail-Datenbank erfolgt mit den IBM-Java-API„NotesClientSideObjects“ (ncso.jar).
Die Authentifizierung erfolgt im Single-Sign-On-Server der OracleAS-Infra-structure. Die dort hinterlegten Zugriffsparameter werden im OracleInternet-Directory gespeichert und ermöglichen dem Anwender die automatischeAnmeldung (SSO).
Abb. 7: Lotus Provider – technische Anbindung
Technisch gesehen ist dieses Portlet mit den Lotus-Mail-Portlets verwand; beidenutzen die IBM-Javaklassen zum Zugriff auf die Daten (ncso.jar).
Ap
pli
cati
on
Se
rver
KONFERENZ
Es ermöglicht den lesenden Zugiff auf jede beliebige Lotus-View (jede Lotus-Tabelle hat mindestens eine View); dabei können die Zugriffsparameter (Host,Server, Lotus-DB, View) im Customize-Dialog (Edit-Mode) des Portlets einge-geben werden. Darüber hinaus kann der Administrator die zu lesenden/an-zuzeigenden Spalten festlegen.
[Die Nutzung des Single-Sign-On Servers ist noch nicht realisiert; daher sindb.a.w. auch Nutzername und Password im Customize-Dialog (Edit-Mode) desPortlets einzugegeben]
Der Code dieses Portlets steht im Knowledge-Exchange des Portalstudio zurVerfügung.
Abb. 8: generic Lortus Provider
Die Nutzung des NCSO-APIs ohne entsprechendes Framework ist ähnlich müh-sam und aufwändig wie die Nutzung des JDBC-APIs.
Der Anwendungsentwickler ist vollständig verantwortlich die Erzeugung undVerwaltung der Verbindung zu Lotus und der Iteration über die entsprechen-den Abfragergebnisse.
17. Deutsche ORACLE-Anwenderkonferenz
Abb. 9: NCSO in Servlets, JSPs
Abb. 10: NCSO-Aufrufe im Code
Der Oracle JDeveloper ermöglicht mit seiner intergrierten Entwicklungsumge-bung die besonders einfache Entwicklung von Java-Anwendungen und -Kom-ponenten. Die offene Architektur ermöglicht, weitere Tools wie z.B. Wizardseinzubinden (Open add-in API). Hierzu wird der aktuell in Entstehung befind-liche Standard JSR-198 unterstützt.Das PDK stellt ein Portal Add-In zur Verfügung, mit dem Portlets im JDeveloperentwicklet werden können.
Ap
pli
cati
on
Se
rver
KONFERENZ
„Framework“-Ansatz• Kapselung der Lotus-Zugriffe im Framework• Deklarativer Ansatz• Volle Ausnutzung der IDE und des Frameworks
Um in das Oracle Application Development Framework bislang nicht bekannteDatenquellen einzubinden, muß ein sog. DataControl erstellt werden. Sobalddieses eingebunden wird, stehen alle weiteren Möglichkeiten des Frameworksund der Entwicklungsumgebung auch für diese Datenquelle zur Verfügung.
Das Model-View-Controller Pattern ist in der modernen Softwareentwicklungstark verbreite (s. z.B. Gamma: Entwurfsmuster).
Abb. 13: Model-View-Controller Architektur
Im Oracle Application Development Framework wird das Modell geteilt in dasModell-API und die Implementierung der sog. Business Services welche dieeigentlichen Datenquellen repräsentieren.
Der kommende Java Standard JSR-227 beschreibt, wie eine Datenquelle an dasModell-API angebunden wird. Auf dieser Basis wurde das Lotus Notes Data-Control für das Framework entwickelt und eingebunden.
Sobald das Lotus Notes Data Control in das Application Development Frame-work eingebunden ist, stehen alle anderen Funktionalitäten der IDE und desFrameworks zur Verfügung, wie z.B. die Data Binding Palette oder die Mög-lichkeit via Drag and Drop Datenquellen direkt in Oberflächen wie z.B. JSP‘seinzubinden.
17. Deutsche ORACLE-Anwenderkonferenz
Abb. 16: Visual and Declarative Development
Ausblick – eine Möglichkeit, wie es weiter gehen kann
Bei der bisher vorgestellten Lösung ist es bei gleichzeitigen Zugriffen auf Lotusund Oracle notwendig, daß die Anwendung verteilte Transaktionen koordinie-ren muß. Eine Lösungsmöglichkeit besteht darin, einen weiteren Layer einzuziehen, derdie Transaktionkontrolle übernimmt.
Eine weitere sinnvolle Erweiterung wäre, einen Lotus Notes Wizard in denJDeveloper zu integrieren. Dieser kann leicht über das javatools-API (JSR 168,www.javatools.org) eingebunden werden.
Ap
pli
cati
on
Se
rver