Domino Version JVM Version

Werbung
Entwicklung eines
Java Server Add-In Tasks
Mathias Bierl
Wabion GmbH
1
Agenda
•
•
•
•
•
•
Kurze Vorstellung
Allgemeines zu Server Add-In Tasks
Warum in Java ?
Aufbau eines Java Server Add-In Tasks
Tips & Tricks
Fragen und Antworten
2
Geschäftsfeld Wabion GmbH
 Die Wabion GmbH bietet alles rund um das Thema Workgroup Lösungen – im
besonderen Lotus Notes und Websphere.
 Das Portfolio umfasst neben den Infrastrukturthemen (Konzept, Betrieb,
Migration von und zu Lotus Notes, mobile Datenanbindung) und der
Datenbankentwicklung, auch die Programmierung und den Vertrieb eigener
Anwendungen (z.B. Wabion Archive).
 Ergänzend dazu bieten wir als Google/Postini Partner auch Google Message
Security und Google Apps Lösungen an.
3
Referenzen
4
Wer bin ich ?
• Mathias Bierl, Staatl. Gepr.
Wirtschaftsinformatiker
([email protected])
• Notesentwicklung / Administration seit 1997
(R 4 – ND 8.5)
• Anti-Spam/Anti-Virus Lösungen
• Google Lösungen (Search, Apps,…)
• Server-Virtualisierung
5
Wer bin ich ?
• Projekte mit Lotus / Domino:
– Lotus Notes R4 – ND 8.5.1
– Sametime, Domino.Doc, Lotus Workflow, LEI, DECS,
DGW
– Formelsprache, Skript, Klassen, Java, JS, HTML, AJAX
– Migration R4-R5-ND6-ND7-ND8, Microsoft Exchange,
…
– C-/C++-API, WIN 3.11-WIN 7, OS/2, AIX, AS/400,
Linux, ...
– Datenanbindungen an SAP, RDBS
– XML/XSL, Servlets, Web Services
– Mobile Datenanbindung (Blackberry, OBMG,…)
6
Server Add-In Tasks
• Verschiedene Typen
– Gestartet zur Ausführung einer bestimmten Aktion
z.B. Compact, Fixup,...
– Dauerhaft laufender Task
z.B. Router, HTTP, SMTP,...
– Periodische Aktionen
• Läuft im Kontext des Domino Servers
• Zugriff auf Serverfunktionen
7
Server Add-In Tasks
• Keine eigene Oberfläche: Ausgabe nur auf
Domino Konsole
• Traditionell in C/C++ entwickelt mit dem C/C++API Toolkit
•
8
Warum in Java ?
C
• Plattformabhängig
Neukompilierung für
jede Platform
notwendig
• Nur bestimmte
Entwicklungsplattformen
Java
• Plattformunabhängig
Nur einmalige
Kompilierung
notwendig
• Beliebige
Entwicklungsplattform
•
9
Warum in Java ?
C
•
Java
• Frei verfügbare JavaKlassenbibliotheken
nutzbar
10
Warum Server AddIn Tasks anstatt
Agenten ?
•
•
•
•
•
•
Zeitliche Ungenauigkeit in der Ausführung
Anwendungsübergreifende Funktionalitäten
Entlastung des Agent Managers
Bessere Kontrolle während der Laufzeit
Unabhängigkeit von Agenten-Sicherheit
11
Besonderheiten
• Domino liefert eine leicht angepasste JVM beim
Server mit
Domino Version
JVM Version
7.0
1.4.2
8.0
1.5.0
8.5
1.6.0
•
12
Aufbau eines Java Server Add-In Tasks
• Hauptklasse erweitert JavaServerAddin
• Klassenkonstruktor kann Aufrufparameter
auswerten
• Hauptmethode runNotes() wird beim Start
aufgerufen
–
–
–
–
Initialisierung des AddIn Tasks
Setzen der Informationen in Domino Task Liste
Sonstige Basisarbeiten
Ausführung Aufgaben bzw Warten auf Nachrichten
13
Aufbau eines Java Server Add-In Tasks
Statuszeile
• Erstellen einer Status Zeile für Show Tasks
Ausgabe
– ID = AddInCreateStatusLine(Text)
• Verändern des Statustextes
– AddInSetStatusLine(ID, Text)
• Löschen der Status Zeile
– AddInDeleteStatusLine(ID)
14
Aufbau eines Java Server Add-In Tasks
Server-Task Ausgaben
• Informationsmeldungen
– AddInLogMessageText(Text)
• Fehlermeldungen
– AddInLogErrorText(Text)
• Debugging (Prefix RunJava JVM:)
– System.out.println(Text)
15
Aufbau eines Java Server Add-In Tasks
MessageQueue
• Anweisungen an die Task werden über eine
MessageQueue übergeben
• MessageQueue muss einen eindeutigen Namen
besitzen
– messageQueue.create(MessageQueueName, 0, 0)
• MessageQueue-Name muss großgeschrieben
sein
• MessageQueue-Name wird für Kommandos und
Shutdown verwendet
16
Aufbau eines Java Server Add-In Tasks
MessageQueue
• Prüfung ob Task bereits läuft
– MessageQueue.ERR_DUPLICATE_MQ
• Warten auf nächste Nachricht an den Task
– MessageQueue.get(Kommandozeile, 256,
MessageQueue.MQ_WAIT_FOR_MSG, 500);
• Prüfung ob Task ein Shutdown Kommando
bekommen hat
– MessageQueue.ERR_MQ_QUITTING
17
Periodische Aufgaben
• Prüfung auf abgelaufene Zeit
– AddInDayHasElapsed()
Neuer Tag
– AddInHasMinutesElapsed(Min)
– AddInHasSecondsElapsed(Sec)
Sekunden/Minuten vergangen
Wichtig: beim Aufruf der Funktion müssen
genau x Sekunden/Minuten vergangen sein,
sonst wird false zurückgeliefert
18
Zugriff auf Domino Daten
• Der Zugriff auf Notes Datenbanken und
Informationen geschieht über NotesFactory
– NotesFactory.createSession()
• Da der Add-In Task im Kontext des Servers läuft
ist im Gegensatz zu einem Client Programme
keine Passworteingabe notwendig
• Detailzugriff erfolgt dann über die Standard Lotus
Notes Java API
19
Einbinden eines Java Add-In Task
• RunJava verwaltet die Java Add-In Tasks
• Java-Class Dateien müssen ins
Programmverzeichnis von Domino bzw in den
Classpath der Domino JVM kopiert werden
• Mitgelieferte Java Add-Ins
– ISpy
– RMEval
– ChangeMan
20
Einbinden eines Java Add-In Task
• Add-In Tasks in Java werden über eine eigene
Server Add-In Task gesteuert
→ RunJava
– Load RunJava AddIn
Startet den AddIn Task
– Tell RunJava Show Tasks bzw Show Tasks
Anzeige von laufenden Java Tasks bzw aller Tasks
– Tell AddIn Quit bzw Tell RunJava Unload AddIn
Beenden der AddIn Task
– Tell AddIn Kommando
Übergabe eines Kommandos an die AddIn Task
21
Besonderheiten
• Aufräumen der Domino Objekte ist sehr wichtig
→ Recycle-Methoden
• Thread Management muss programmiert werden
• Java Max Heap Size sollte erhöht werden
Empfehlung: JavaMaxHeapSize=256MB
• Keine offizielle Dokumentation verfügbar,
allerdings entspricht die Struktur, die Parameter
und die Funktionsnamen meistens denen der C
bzw C++-API
22
Besonderheiten
• Server Task ist auf die jeweilige Server Version
durch die JVM Version festgelegt
• Java-Class-Dateien werden gecacht. Zum
Neuladen muss der RunJava Task neu gestartet
werden
23
Vergleich C/C++/Java
• Funktionsnamen und Parameter sind relativ
ähnlich
– C: ID = AddInCreateStatusLine(Name)
Java: ID = AddInCreateStatusLine(Name)
• Klassenmodelle in C++ und Java sehr ähnlich
24
Dokumentationen
• Beispiel Code von Julian Robichaux
http://www.nsftools.com/tips/JavaTips.htm#javaaddin
• API Dokumentationen für Domino
http://www.ibm.com/developerworks/lotus/documentation/capi/
•
25
Q&A
•
Fragen ??
26
Ich danke für Ihre Aufmerksamkeit
27
Kontakt
Wabion GmbH
Katharinenstrasse 57
D-73728 Esslingen
Phone: +49 (0)711 – 25 25 52 24
Fax: +49 (0)711 – 25 25 52 29
Web: http://www.wabion.com
Mathias Bierl
eMail: [email protected]
Mobil: +49 (0) 172 877 27 65
28
Herunterladen