Domino 9 und frühere Versionen > ND7: Entwicklung
Domino Webservices: Was ist das?
flaite:
worum geht es hier eigentlich
Wie ich oben beschrieben habe, liegt die Stärke von Webservices daran, dass Informationen zwischen unterschiedlichen Plattformen ausgetauscht werden können. Und das ist hier ein Beispiel, in dem eine Java Swing Anwendung auf einen Domino Webservice zugreift. Ich habe jetzt versucht, die Installation des Java Swing Clients möglichst einfach zu machen.
warum ant?
So hier ist jetzt next generation der Verteilung von Java Beispielen über Foren.
Es geht mit Ant.
Aber was ist das Problem?
Für Beispiele wie Webservices mit Domino benötigt man eine Menge Zusatzpackages, v.a. wenn ich noch mit neuerem Swing-Zeug rumexperimentiere.
Das heisst für die Leute, die sich das Beispiel anschauen wollen, dass sie diese ganzen langweiligen Schritte wie die ganzen Zusatz-Libraries im Internet aufstöbern, classpath setzen, kompilieren, etc. nachvollziehen müssen.
Für Java gibt es aber ein einfach zu bedienendes Kommando-Zeilen buildtool namens ant.
Dann muß der Benutzer des Beispiels nur noch einen command prompt öffnen zu dem Verzeichnis wechseln, wo das zip file mit meinen Klassen und das build.xml File (s. Attachments) von ant ist und die drei Buchstaben ant eingeben. Den Rest erledigt dann die Ameise. Vor allem wird damit auch dieser Server sehr wenig belastet, weil ant die ganzen jar-Zusatzlibraries von anderen Servern holt. :D
Wenn die Benutzer ant haben, brauche ich nur eine ant Deskriptor-Datei für den Build und die von mir geproggten unkompilierten Java Source Files in einer Zip Datei posten.
Im Attachment sind diese beiden Dateien.
Um das build.xml File für ant zu benutzen, muß erstmal ant installiert werden.
ant installieren
Wie ant installieren?
Ganz einfach. Es muß allerdings ein Java Standard Developer kit (j2sdk) auf dem Rechner installiert sein
Hier ist der download.
http://ant.apache.org/
Dann müssen noch ein paar Umgebungsvariablen für das OS gesetzt werden:
ANT_HOME -> Das root Verzeichnis von ant (bei mir ist es: C:/ant/apache-ant-1.6.5)
PATH -> das bin Verzeichnis von ant muß hinzugefügt werden: (Bei mir ist es C:/ant/apache-ant-1.6.5/bin)
Ausserdem muß die Umgebungsvariable JAVA_HOME gesetzt sein (bei mir ist es D:\j2sdk1_4_2_05
Vermutlich muß noch das bin Verzeichnis von JAVA_HOME (also %JAVA_HOME%\bin) in der PATH Umgebungsvariable sein. Bin mir aber nicht so 100% sicher.
Ich bin ziemlich windows lastig. Es würde mich freuen, wenn das mal jemand mit Linux ausprobieren könnte. Die Installation von ant wird auf der Webseite von ant (s.o.) beschrieben.
Ihr könnt die korrekte Java und ant Installation testen, indem ihr in den command prompt (cmd, dos-box) javac und danach ant eingibt.
Bei javac wird etwas ausgegeben, dass mit usage: anfängt (dann ist es richtig)
Bei ant wird Buildfile: build xml does not exist! ausgegeben (dann ist es richtig).
Bei unklarheiten posten.
Ant nutzen mit dem geposteten Beispiel
Schritt 1: Beide hier angehängten Dateien (das zip und die build.xml) einfach in ein beliebiges Verzeichnis kopieren (besser ohne Leerzeichen).
Schritt 2: Mit dem cmd-prompt in das Verzeichnis navigieren (cd Befehl von DOS).
Schritt 3: ant eingeben und Returntaste drücken.
Das ist alles
Danach passiert eine Menge (erst werden ein paar Jars aus dem Internet geholt, rumkopiert, Classpath gesetzt, kompiliert und der Client gestartet).
Im CMD-Fenster erscheinen die entsprechenden Meldungen.
Die oben gepostete Notes Datenbank (serverseitige Webservices) muß in dem exakten Pfad wie ich es auch habe erreichbar sein (http://localhost/webservices/FirstTest.nsf). Das heisst nachtürlich auch: der http Server von Domino muß laufen. Ist dies nicht der FAll, dann startet der Client trotzdem, nur wird dann immer eine Fehlerbox (Verbindung nicht gefunden. Vermutlich läuft der Server nicht) ausgegeben.
Weitere Probleme können auftauchen. Ich hole mir 2 jar-Libraries aus http-Oberflächen von cvs Maschinen. Die haben schon mal Ausfälle. Das wird aber in der Dos-Box gemeldet. Bitte posten bei Problemen. Die meisten jar-libraries lasse ich von einem maven-repository runterladen. Das dürfte sehr stabil sein.
Ok. Wenn ihr Ant startet erscheinen ein paar Meldungen in der DosBox: V.a. der Download dauert ein bischen länger (mit relativ schneller Internet-Verbindung bis zu 4 Minuten). Ant ist schlau genug, dass er merkt, dass bestimmte Dateien schon da sind, so dass beim zweiten starten viele Operationen nicht mehr ausgeführt werden.
Die Meldungen sehen ungefähr so aus:
Am Anfang kommt download und die einzelnen libraries. Das kann je nach Internet-Verbindung ein bischen länger dauern. Z.B. ist axis.jar 1.6 MB groß, xerces 875 kb, looks 329 kb, die restlichen aber deutlich kleiner.
Dann unzip, compile, copy, execute (wesentlich schneller).
Es erscheint dann der Java Client. Eine ca. 100 x 50 Pixel große nett anzuschauende Box. Das Programm ist einfach zu bedienen. In das obere Kästchen ein Land eingeben. Return oder Fragezeichen drücken und Domino sendet dann die Hauptstadt zurück (falls von diesem Land eine als Dokument vorliegt (s. nsf Beispiel oben).
Der Source Code von dem Client selber ist ziemlich übel zusammengeschustert. Aber ich finds erstmal nicht schlimm. Ich bin mit den neuen Möglichkeiten von swing erst noch am experimentieren.
Würde mich freuen, wenn das mal jemand ausprobieren könnte.
Ant ist im Java-Bereich sehr weit verbreitet und viel besser als maven ;D
OOOPS ich stelle gerade fest, dass sich Dateien mit .xml Endungen hier nicht anhängen lassen. Ich nenne die Datei jetzt in build.txt um. Ihr müsst die dann nach dem kopieren wieder in build.xml umbenennen.
Ich hab versucht, die einzelnen Schritte des build.xml ein bischen zu beschreiben:
http://atnotes.de/index.php?topic=26707.msg170000#msg170000
Gruß Axel
flaite:
[bitte löschen]
flaite:
(meine letzten Worte zu diesem Thema, promised)
This is actually easy to use.
Bedingung:
a) Ein Jsdk1.4 oder 1.5 ist auf dem Rechner installiert.
b) ant installieren (download und 2 Umgebungsvariablen setzen, oben beschrieben)
c) die beiden attachten Dateien in dem vorletzten Posting dieses Thread runterladen und in ein Verzeichnis tun.
d) ant.txt in ant.xml umbenennen
d) zu dem Verzeichnis, wo die beiden runtergeladenen Dateien sind, mit dem DOS-Prompt navigieren.
e) ant eingeben
f) Return Taste drücken
Den Rest macht ant.
(screenshot ist bei Schritt e)
[verschieb den Inhalt noch rüber]
flaite:
Julian Robinchaux und Bruce Elgort haben nun eine 2-teiligen Podcast über Webservices veröffentlicht (http://www.eknori.de/archives/147). Und zwar auf LotusUserGroup.org, eine relativ interessante Webseite, die sich mit Domino Entwicklung und Administration beschäftigt.
Podcast heisst für mich zur Zeit noch mp3 Files und Filme, die man sich in den Gratis Realplayer runterladen und vorm Einschlafen/beim Bügeln/ beim Aufräumen anhören/anschauen kann. Gibt aber auch Podcast Player. Weiss aber nicht, wo der Vorteil ist.
Anyway. Wie ist nun dieser Podcast von Julian und Bruce?
Beide Teile bringen eine sehr high level Einführung in das Thema. Das muß nicht schlecht sein. Im ersten Teil werden einige typische Begriffe rund um Webservices kurz angerissen.
Webservices dienen dem Austausch von Programmen. RPC-Type Webservices sind einfach API-artige Aufrufe gegen ein Programm auf einem anderen Rechner auf einer möglicherweise anderen Plattform.
Ich persönlich finde die einseitige Fokussierung auf RPC-Type Webservices ein bischen problematisch. Es gibt eine Menge von Fällen, in denen der andere SOAP-Type (Document-Style) absolut notwendig ist. Ist aber richtig, dass man mit RPC-Type anfangen sollte, wenn man ein bischen mit Webservices rumspielt.
Als nächstes werden WSDL Files besprochen. WSDL-Files dienen der Beschreibung des Webservices und sind auf vielen Plattformen stark mit Code-Generierung verknüpft. Wie Julian sagt, sollte ein Anfänger nicht versuchen WSDL Files zu verstehen. Diese Dinger werden in der Regel von den WebServices IDEs automatisch generiert. Bzw kann man die IDE auch aus einem bestehenden WSDL Files einen Webservices Client generieren lassen.
Dann wird kurz UDDI besprochen. Dies ist eine Art Registry für Webservices. Sowas wie ein Telefonbuch. Zu Anfang von Webservices wurde dieses Konzept stark überdehnt. Man träumte von globalen Telefonbüchern von Programmfunktionalitäten. Dies ist aber als Konzept zu unsicher und spacig. Wenn viele Webservices in einer Organisation benutzt werden, machen vielleicht lokale UDDI-Registries Sinn, um den Überblick zu erhalten.
Julian nennt dann SOA (Service Oriented Architecture) als Folge-Architektur-Paradigma von UDDI. Das ist mir neu und nicht dumm. Er sagt richtig, dass in SOA Webservices eine prominente Rolle spielen auf der anderen Seite aber über die rein technischen Webservices weit hinausgeht (es ist ein Architekturkonzept, um z.B. die Technologie Webservices sinnvoll in einer Organisation zu nutzen.
In SOA geht es u.a. um das Zusammenspiel von Webservices. Sowie um die Realisierung von verschiedene automatisch bereitgestellte Dienste wie z.B. Transaktionen, Security, State-Management und Fail-Over.
SOA ist sehr interessant. Mit J2EE hat man die Möglichkeit aus der IT-Infrastruktur einer Organisation ein riesiges Objekt-Modell zu machen. Man kann über J2EE alles in ein Objekt-Modell einbinden (Domino, RDBMS, existierende Cobol-Anwendungen, SAP, uvam). Seit den sogenannten JCA-Adaptern gibt es da sehr wenig Grenzen. Man hat aber nun festgestellt (und genau das glaube ich z.Zt. in der freien Wildbahn zu erleben), dass ein großes Objekt-Modell sehr schwierig zu verstehen und managen ist. Webservices bieten nun die Möglichkeiten, ein Objektmodell in mehrere kleinere und einfachere Objektmodelle zu teilen und über letztlich nicht-OO Schnittstellen (die Webservices Endpoints) zu integrieren.
Im zweiten Teil des Vortrags von Julian sagt er, dass Domino intern apache-axis - eine robuste und u.a. auch von mir präferierte openSource Webservices Plattform auf Java - benutzt. Dann geht er noch kurz auf die Motivation ein, warum Lotus das eingebaut hat.
Webservices werden in der Zukunft mehr benutzt. Sie sind relativ einfach zu realisieren und sämtliche IT-Vendors spielen da mit (Oracle, Microsoft, Java/J2EE, Schnittstellen zu Host-Anwendungen, etc..). Es ist die dominante Plattform für Enterprise Application Integration und besitzen reale Vorteile gegenüber css-Files.
Es ist ziemlich klar, dass Julian und einer aus dem TSG-Team auf der nächsten LotusSphere einen Vortrag über SOA halten werden.
Für einen Reality Check, könnte man nun versuchen, einen Webservices Layer für eine größere Notes-Anwendung wie z.B. Help!!! zu erstellen.
flaite:
Ein wichtiger Punkt ist aber, dass man das mit code einmal ausprobieren sollte, damit diese ganzen buzzwords wie WSDL, RPC-Call, SOAP, etc. ein bischen mit Leben gefüllt werden.
Also nochmal: In diesem Thread gibt es eine NotesDatenbank als Webservices Server Beispiel und 2 Clients:
- Einen Notes Client
- Einen supereinfach über ANT zu installierenden Java Client, den keiner runterlädt. ;D
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln