Domino 9 und frühere Versionen > ND8: Entwicklung
Composite Application - Probleme mit DB2 Zugriff
Ahuga:
Meine Composite Applikation besteht aus einer Noteskomponene (View) und einem Plug-in (ViewPart.) und hat folgenden Ablauf:
1. Über den Expeditor 6.2 starte ich die Notes Composite Application.
2. Ein Klick auf eine Zeile in der Notes View übermittelt einen String ans Plug-in
3. Das Plug-in holt aufgrund des Strings Daten aus der DB2
4. Die ViewPart stellt die Daten dar
Die Schritte 3 und 4 funktionieren, wenn ich das Plug-in aus einer Main-Klasse starte (ohne Kontakt zum Notes Client).
Sobald die CA auf dem Notes Client 8.5.1 gestartet wird, habe ich die Fehlermeldung:
--- Code: ---java.lang.ClassNotFoundException. COM.ibm.db2.jdbc.app.DB2Driver
--- Ende Code ---
Liegt das Problem darin, dass Lotus Notes das db2javar.jar nicht kennt?
Ich habe es mit einer System Variable: Notes_JavaUserClasses versucht, das hat jedoch auch nichts gebracht.
Über hilfreiche Tipps wäre ich äusserst dankbar.
Ralf_M_Petter:
Hallo Martin!
Ich denke du hast da noch ein wenig Verständnisschwierigkeiten mit dem Classloader in Eclipse. Aus einem Plugin hast du nur Zugriff auf die Klassen, die dein Plugin auch als Abhängigkeit angegeben hat. Das heisst, wenn du in deinem Plugin Zugriff auf dieses db2java.jar dings brauchst, dann muss diese Jar Datei entweder in deinem Plugin sein, oder du musst ein Plugin, dass diese Datei enhtält als Abhängigkeit angeben. Zweiteres ist zu bevorzugen. JavaUserClasses hat damit überhaupt nichts zu tun, da dies nur für Notesagents und Applets gilt, aber in Eclipse keine Auswirkungen hat.
Grüße
Ralf
Ahuga:
Im Plugin habe ich Zugriff auf das db2java.jar, denn es ist im Projekt im Java Build Path eingebunden, deshalb funktioniert der DB Zugriff, wenn der Notes Client nicht im Spiel ist.
Erst wenn der Notes Client geöffnet wurde und ich in die View klicke, möchte mein Plugin auf die DB zugreiffen, kennt nun jedoch den Treiber nicht mehr.
Im Plugin als solches funktioniert der DB2 Zugriff einwandfrei.
Ich bin mir gar nicht im Klaren, wo das Problem liegt: auf der Notes Seite, auf der Notes Java Seite, im Plugin, beides? Verstehe ich nicht.
Ralf_M_Petter:
Aber du führst das Plugin nicht als Plugin aus, wenn du es in Eclipse testest, oder? Sprich du hast keine Eclipse RCP in dem du das Plugin testest, sondern hast einfach eine Main Klasse definiert die du als Javaprogramm ausführst. So kann man ein Plugin nicht korrekt testen.
Ich gehe mal davon aus, dass das Jar dass du für die DB/2 benötigst nicht in Lotus Notes enthalten ist. Du musst also ein eigenes Plugin aus diesem Jar machen. Dazu gibt es in Eclipse einen Assistenten. Du sagst im Menü File New|Other Dan wählst du aus der Liste Plugin Development aus. Da drauss dan ein Plugin from existing Jar Archives. Im nächsten Dialog, in dem du die Jars auswählen musst, die in das Plugin aufgenommen werden sollen, drückst du add external und fügst dein Jar hinzu. Dann weiter und Vernünftigen Pluginnamen wählen.
Dann nach dem Fertigstellen im Plugin Manifest auf dem Reiter Runtime die Packages auswählen die das Plugin exportieren soll. Dann dieses neue Plugin als Abhängigkeit bei deinem bestehenden Plugin hinzufügen und natürlich auch in Notes reinspielen. Dann sollte es gehen.
Grüße
Ralf
Ahuga:
Mit MySQL funktioniert es, obwohl ich den Schritt "... in Notes reinspielen" nicht gemacht habe, da ich nicht genau weiss, was Du meinst.
... mit der Unterstützung von Ralf kannst Du die Welt erobern.
Wie ist es mit dem db2java.zip, da handelt es sich um eine ZIP und nicht eine JAR Datei. Versuche es mal mit dem "db2jcc.jar.
Nun starte ich die Applikation aus dem Expeditor. Das Ziel wäre es, das ganze aus dem Notes Client heraus starten zu können. Wo ist da der Unterschied?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln