Domino/WebSphere Integration für dynamisches e-business Klaus-Peter Schlotter Solution Partnership Center Stuttgart [email protected] Agenda ! ! ! ! ! Entwicklung des e-business Was ist WebSphere/J2EE? Was ist Domino? Domino/WebSphere Integrationstechniken Demos Die Evolution des e-business Dynamic e-business . . längerfristiger Trend zu mehr “.automatisierten und integrierten Prozessen.. . ” Transformation des Geschäftsmodells —The McKenna Group V A L U E Integration des Webs mit Geschäftssystemen B2B Beschaffen von Informationen auf dem Web WEB Access Standards TCP/IP Publish HTML EAI B2C Transact SSL Bestehende Geschäftsmodelle Integrate Internally Integrate Externally JAVA XML Adapt Dynamically WEB SERVICES Neue Geschäftsmodelle e-business Adaption I Unternehmen Unternehmen Weltweit Weltweit Integrate Internally 5% Integrate Externally Große Große Unternehmen Unternehmen Integrate 3% Externally 13% Transact 13% Access 47% Access 14% Integrate Internally 14% Transact 14% Publish 32% Nur die Hälfte der weltweiten Unternehmen machen mehr als einfachen Internetzugriff. Allerdings: mehr als 40% der großen Unternehmen (>1000MA) arbeiten mit webbasierten Transaktionen. Quelle: e-business Adoption Tracking Study 2Q01 Publish 45% e-business Adaption II Internet Firewall Die technologischen Anforderungen wechseln vom Web Application Server . . . Web Application Server Transaction Servers Data Servers Access Publish Transact e-business Adaption III . . . zu einer vollständigen, offenen, Standard basierten e-business Infrastruktur Geschäftspartner Zulieferer Angestellte Edge Servers Kunden Directory and Security Servers Integration Servers Transaction Servers Web Presentation Servers Web Application Servers Data Servers Personalization Portals Integrate Internally Mobile Integrate Externally Commerce Collaboration Adapt Dynamically e-business Integration Informationen Elektronische Beschaffung, Beschaffung, Elektronische Marktplätze und und Exchanges Exchanges Marktplätze Anwendungen SCM (Supply (Supply Chain Chain SCM Management) Management) e-business Initiativen Initiativen e-business ERP-Integration M&A-Verwaltung UnternehmensUnternehmensumwandlung umwandlung Mitarbeiter CRM (Customer (Customer CRM Relationship Relationship Management) Management) Verwaltung des Produktzyklus Teambasiertes Produktdesign Direkte Verarbeitung Prozesse Collaborative Commerce – Menschen verbinden Information und Wissen Gemeinschaft " Kenntnis über Personen im Netz " Echtzeitkommunikation zwischen Personen " Virtuelle Arbeitsplätze für die Problemlösung " Strukturierter Workflow " eLearning Business Center Geschäftstransaktionen Collaborative Commerce - Produkte Information und Wissen Gemeinschaft WebSphere Business Center Geschäftstransaktionen Agenda ! Entwicklung des e-business ! Was ist WebSphere/J2EE? Einführung in J2EE " IBM‘s WebSphere Application Server " IBM‘s WebSphere Software " ! Was ist Domino? ! Domino/WebSphere Integrationstechniken ! Demos The J2EE Framework Client Application Logic Data JDBC View Model Interface Application Web Container Component Tag Library J2EE Application Server JAF Interface JavaMail JMS JDBC Web services JSPs JTA JNDI am Application Component e d En n io t taXML n JavaMail Documents e äs r rP e d RMI Mail Server Java Application DB JAF JavaMail JMS JDBC JTA JNDI en i l EJBfoContainer l Sessione Entity z Beans Beans in E : ie l Interface Fo te r Application Controller ie Component m i n A RMI/IIOP Client Application RMI/IIOP Applet Servlets Database Middleware (X)HTML/ XML RDMS IIOP CORBA Server JNDI Remote System Directory Service JMS Message Queue IBM WebSphere Application Server ! ! ! ! IBM‘s Java Application Server Teil von IBM‘s WebSphere Familie Multi-Plattform Hohe Skalierbarkeit Clustering " Caching " ! Version 5 unterstützt J2EE 1.3 Standard ! Standard basierte Entwicklungswerkzeuge " WebSphere Studio Application Developer (basiert auf Eclipse Open Source) WebSphere Software für dynamisches e-business Stellt jedem Benutzer oder Gerät angepassten Inhalt zur Verfügung Commerce Portale Geschäfts-Prozesse zur Erhöhung der Flexibilität integrieren und automatisieren Umfassende Verkaufslösungen für Kundenbindung (B2C) und komplexe Geschäftsprozesse (B2B) Business Process Management Modellieren und Automatisieren von Geschäftsprozessen über verschiedene Systeme und Kunden- Business Organisationen hinweg Personailiserter Zugriff auf Informationen, Anwendungen bindung & Integration und Personen für Angestellte, Information Partner und Kunden Mobil und Sprache WebSphere Mobil- und Sprachlösungen zur Erweiterung des e-business für Angestellte, Kunden und Geschäftspartner Basis und Tools Anwendungs-Integration Flexible und leistungsfähige Integration von Geschäftsprozessen im Unternehmen oder mit Handelspartnern Neue Anwendungen erstellen, verbinden und verwalten Studio Professionelle e-business Anwendungsentwicklungstools basierend auf einer offenen "workbench" Technologie Application Server Extrem leistungsfähige und skalierbare Plattform um e-business Anwendungen umzusetzen Host Access Einfacher Zugriff auf Anwendungen & Daten auf Host-Systemen Agenda ! Entwicklung des e-business ! Was ist WebSphere/J2EE? ! Was ist Domino? Stärken " Domino Architektur " Domino Anwendungsarchitektur " ! Domino/WebSphere Integrationstechniken ! Demos Lotus Domino ! Führende Infrastruktur für „collaborative“ Kommunikation e-mail " Instant Messaging " Replikation von Anwendungen " ! Verfügbar auf allen führenden Betriebssystemen ! Hohe Skalierbarkeit Clustering " Partitioning " ! Infrastruktur für „Rapid Application Development (RAD)“ ! Unterstützung der wichtigsten Protokolle " HTTP, CORBA, SMTP, POP3, IMAP, LDAP, NRPC,... Lotus Domino Architektur SOAP RPCs & Protocols NRPC -- HTTP -- SMTP -- POP/IMAP -- NNTP UDDI APIs WSDL Java -- COM -- C/C++ -- CORBA/IIOP JSPs Object Methods and Classes XML Forms -- Documents -- Views -- Scripts XSL Capabilities Workflow e-mail e-Mail Discussions Directory Search & Index Rendering Rendering Editing Replication Security Security Routing Database Database ... Lotus Domino Anwendung Domino Application(Data Base) .NSF Security Internet Protocols Access Control List Design Elements Form Agent The application Executes on the Domino Server Frameset View "code" Pages Data Elements documents Agenda ! ! ! ! Entwicklung des e-business Was ist WebSphere/J2EE? Was ist Domino? Domino/WebSphere Integrationstechniken " " " " Unterschiede der Plattformen Gemeinsame Benutzer und Gruppen Verwaltung Client Single Sign-on Serverseitige Java Integration – CORBA – XML – Domino JSP Tags ! Demos Unterschiede zwischen Domino und WebSphere Primary Attribute Domino WebSphere App Server Application Type Collaborative Integrated or Transactive Content Type Document Data Object Type Form, view, database Architecture Scalability Integrated application platform Large Servlet, JavaBean, JavaServer Page (JSP), Enterprise JavaBean (EJB) J2EE Java component platform Skills required Moderate High Development Model BASIC, COM/COM+, Java, Web (JavaScript, DHTML) Notes, Browsers Java (J2EE) NRPC, HTTP, IIOP, SMTP, NNTP, IMAP/POP3 etc. Domino Designer HTTP, IIOP Clients supported Protocols supported Application tools Massive Browsers WebSphere Studio App. Developer Gemeinsame Benutzer und Gruppenverwaltung LDAP WebSphere Domino LDAP Domino WebSphere ...Or... HTTP/HTTPS Domino as LDAP 3rd Party LDAP Client Single Sign-on ! Domino 5.0.5 "Multi-Server Session Authentication" ein cookie-basiertes Session "Authentication" Schema " arbeitet über mehrere Domino Server – teilen einen Sicherheitsschlüssel der im Serveradressbuch abgelegt ist. " ! Domino 5.0.5 MTSA kompatibel mit WebSphere 3.5 LTPA Domino kann den WebSphere Sicherheitsschlüssel importieren " Domino kann WebSphere kompatible "Cokies" produzieren und entgegennehmen " Resultat: "Single Sign-On" über Domino 5.0.5+ und WebSphere 3.5+ Server " Ablauf eines „Client Single Sign-on“ Vorgangs ! Definieren eines Tokens für die Domain (z.B. de.ibm.com) ! Definitionen in WebSphere und Domino vornehmen 1. Erzeugen eines Cookies im Browser über den Aufruf einer URL ! ! z.B. http://server.de.ibm.com/servlet/snoop // WebSphere Objekt http://server.de.ibm.com/names.nsf?OpenDatabase // Domino Objekt 2. Cookie wird an Browser übertragen ! ! Alle nachfolgenden URLs übertragen das Cookie für die Domain im HTTP Header Verwenden des Cookie für den Aufbau einer CORBA Session zu einem Domino Server in einem Java Programmobjekt (Servlet, JSP kann das Cookie aus dem HTTP Header lesen). ! Demo dazu später Serverseitige Java Integration ! Zugriff von Servlets und JSPs auf Domino Daten CORBA Zugriffe " Domino JSP Tags " ! Aufruf eines Servlets über den „Submit“ einer Domino Form ! Aufruf von Enterprise JavaBeans aus Domino Agenten " Releaseabhängig wegen unterschiedlicher Java Virtual Machine Versionen ! Zugriff auf Domino Daten über XML CORBA Zugriffe auf Domino Objekte notesid1 N R P C N R P C I I O P I I O P Notes.jar App NCSO.jar Über die Bibliothek NCSO.jar werden die API Aufrufe an den Server weitergeleitet # Remote API Notes/Domino Kernel Notes/Domino Kernel notesid2 NAMES.NSF import lotus.domino.*; either RED or BLUE code public class NotesServerVersion { public static void main(String args[]) { CLASSPATH= ...;..\ ...;..\NCSO.jar;... NCSO.jar;...\\Notes.jar;... Notes.jar;... try { Session s = NotesFactory.createSession("Servername“, ……); Session s = NotesFactory.createSession(""); Database db = s.getDatabase("","NAMES.NSF"); Database db = s.getDatabase("Servername","NAMES.NSF"); System.out.println("Database Title = " + db.getTitle()); } catch (NotesException e) { ..... ...... Servlet mit LtpaToken für CORBA Zugriffe I Retrieve the Cookie Beim Aufruf des Servlets wird der LtpaToken im HTTP Header übertragen. try { cookies = req.getCookies(); } catch (Exception e) { sendResponse(res, "Exception from req.getCookies(): " + e.toString()); return; } if (cookies == null) { s1 = "No cookies received"; } else { for (int i = 0; i < cookies.length; i++) { String cookie = cookies[i].getName(); if(cookie.equals("LtpaToken")) { sessionToken = cookies[i].getValue(); System.out.println("Found LtpaToken cookie"); } else { System.out.println("Found other cookie: " + cookie); } } // endfor } // endelse Servlet mit LtpaToken für CORBA Zugriffe II Use ........ the Cookie if (sessionToken != null) { System.out.println("Found session token: " + sessionToken); NotesThread.sinitThread(); Session session = null; try { session = NotesFactory.createSession(„server.de.ibm.com", sessionToken); s1 = "<br>" + "UserName: " + session.getUserName(); } catch (NotesException e) { s1 += "<br>" + e.id + e.text; e.printStackTrace(); } finally { try { session.recycle();} catch(Exception x) {} NotesThread.stermThread(); sendResponse(res, s1); } // end finally } // endif sessionToken else { System.out.println("Null Session Token"); sendResponse(res, "No sesssion LTPA token found"); } .............. Domino Custom Tag Library ! Schließt Java code in HTML-ähnliche "Tags" ein ! Stellt komplexe Funktionalität in einfach zu benutzende Makros zur Verfügung ! Trennung von Präsentation und Logik ! Geringe Javakenntnisse erforderlich # ! Schnell, einfach - RAD ( Rapid Application Development) in einer J2EE Umgebung. (Q1/03 Domino Toolkit für WSAD) ! Erfahrene Javaentwickler können schnell JSPs entwickeln ! Möglichkeit für LotusScript Entwickler JSPs zu entwickeln ohne Javakenntnisse Domino Custom Tags ! ! ! ! Data Access Tags Data Input Tags Process Control Tags Utility Tags Data Access Tags session formula unid db (database) Ftsearch viewloop document Item docloop view viewitem more.... <%@ taglib uri=“domtags.tld” prefix=“domino”%> ……………. <TABLE> <domino:view dbname=“foo.nsf” viewname=“people”> <domino:viewloop> <TR><TD><domino:viewitem col=“1”/></TD> <TD><domino:viewitem col=“2”/></TD></TR> </domino:viewloop> </domino:view> </TABLE> Data Input Tags form input setitem checkbox savedoc editdoc deletedoc saveclosedoc validaterequired validatepattern richtext more.... <%@ taglib uri=“domtags.tld” prefix=“domino”%> ……………. <domino:form name=“new” dbname=“demo.nsf” schema=“document”> Subject: <domino:input name=“subject”/><br> Data:<br> <domino:richtext name=“body”/> <domino:savedoc/> </domino:form> ……………….. Process Control Tags action ifserverevent runagent ifauthor ifdocauthor ifdbrole ifcategoryentry nodocument more.... <%@ taglib uri=“domtags.tld” prefix=“domino”%> <%String theUNID = request.getParameter(“unid”);%> ……………. <domino:ifdocauthor> <domino:runagent name=“markCompleted” unid=<%=theUNID%>”/> </domino:ifdocauthor> ……………….. Utility Tags if else elseif condition switch case format browsertag nocache <%@ taglib uri=“domutil.tld” prefix=“util”%> ……………. <util:if> <util:condition> <%=session.getAttribute(“CONF”).equals(“Paderborn”)%> </util:condition> Welcome to Paderborn<BR> </util:if><util:else> Hello World<BR> </util:else> ……………….. Sample HelloDomino.jsp <!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML><HEAD><TITLE>Hello Domino -- Example One</TITLE> <%@taglib uri="/WEB-INF/tld/domtags.tld" prefix="domino"%> <%@taglib uri="/WEB-INF/tld/domutil.tld" prefix="domcommon"%> <META name="GENERATOR" content="IBM WebSphere Studio"> </HEAD><BODY><B></B> <domino:default scope = "page" host = "localhost:81" user = "" password = "" dbserver = "" dbname = "" viewname = "" onfailure="inline"/> <H1>HelloDomino.jsp </H1> <H1>HelloDomino.jsp</H1> Einige Daten aus dem Domino “session” Tag <HR> <domino:session id="mySession" > <%-<%-- This is a JSP comment. It's here to remind you that the mySession object's scope is only within the session tag. --%> --%> <H2> Platform = <%= mySession.getPlatform() %> <br> br> Version = <%= mySession.getNotesVersion() %> <br> br> Server name = <%= mySession.getServerName() %> <br> br> </H2> <hr> </domino:session> </BODY> </HTML> HelloDomino.jsp im Browser Aufruf eines Servlets über den „Submit“ einer Domino Form Das Servlet kann entsprechend der Eingaben verschiedene EJBs aufrufen um eine Reservierung vorzunehmen. Um die Eingabedaten wieder in Domino abzuspeichern müssen die Eingabewerte aus dem Servlet Requestobjekt extrahiert und ein Dokument über die Domino Java Objekte generiert werden Aufruf von Enterprise JavaBeans aus Domino Agenten ! Mit der JVM in der Version 1.3 von Domino 6 kann ein Java Agent auch direkt auf EJBs zugreifen Einfacheres Abspeichern der Eingabedaten in Domino " Konfiguration einer J2EE Client Umgebung für den EJB Zugriff " Abwegen der Performance Unterschiede zwischen Servlets und Agenten – Servlets verbleiben im Speicher " XML Integration – Was ist XML? ! ! ! ! ! ! ! eXtensible Markup Language (XML) Textrepräsentation von Daten und deren Struktur cross Plattform/cross Technologie Gewachsen aus SGML Separiert Daten und Präsentation Wurde entwickelt für den Datenaustausch wischen Programmen Eigene Datenstrukturen können definiert werden (sieht aus wie HTML) XML Integration – Beispiel: Domino View als XML XML Integration ! Die Custom Tag Libraries basieren auf dem Datenaustausch über XML ! Es können sowohl die Domino Datenelemente wie auch die Designelemente ausgelesen werden ! Mit Domino 6 wurden die Domino Objekte um verschiedene XML Fähigkeiten erweitert " " " " " DOMParser SAXParser XSLTransformer DXLImporter DXLExporter „Collaborative Components“ im WebSphere Portal Two portlets that communicate using " portlet messaging " person tags " menu tags " DominoService " ViewInfoService " CalendarService Demos ! WebSphere Studio Application Developer als Entwicklungsumgebung Single Sign-on – Retrieve Cookie for a CORBA session " JSP Tag Samples " Client J2EE Framework – Animation 1 Application Logic JDBC View Model Web Container (X)HTML/ XML Servlets Tag Library Mail Server RMI Java Application EJB Container IIOP CORBA Server JAF JavaMail JMS JDBC J2EE Application Server Session Beans Entity Beans JAF JavaMail JMS JDBC JTA JNDI Controller RMI/IIOP Client Application RDMS JavaMail JSPs JTA JNDI RMI/IIOP Applet Data JNDI Directory Service JMS Message Queue J2EE Framework – Animation 2 Interface Application Component Client Application Interface Application Component XML Documents Database Middleware Applet Web services (X)HTML/ XML DB Interface Application Component Remote System