Hi,
Hi. Das schöne an diesem "Java für Anfänger" ist, dass man die fellow Fragensteller noch mit Handschlag begrüssen kann:
kann mir jemand sagen wie einen Jdbc Treiber einbinde ?
ja.
[gehe davon aus, dass du LoNo5 benutzt. LoNo6 dürfte ähnlich und gerade nicht auf diesen computer
]
Erstmal Frage:
Du vewendest db2java.zip, oder?
Für DB2 befindet sich der Treiber in db2java.zip. Es gibt davon 2 Versionen. Eine für Java11 (für LoNo5 funktioniert wahrscheinlich nur diese) und eine andere für >=java12. Bei mir steht die java11-Version unter SQLLIB/java11 und die java2 Version unter java (ich habe Standardmässig Java2 Unterstützung in meinem DB2.
Es gibt unterschiedliche Wege einen JDBC-Treiber in Notes einzubinden einzubinden.
Ein JDBC-Treiber ist nichts anderes als eine einfache Java-Klasse, bzw ein Verbund der selben (jar oder zip File).
Weg 1 ist für die Entwicklung der flexiblere, Weg 2 vielleicht für Produktivsysteme der Bessere.
Weg 1:
{
später habe ich festgestellt, das
mit JDBC-Treibern Weg 1 nicht funktioniert. Will man sonstige Zusatz-Libraries einbinden, kann man das aber machen. Bei dem JDBC-Treiber von DB2 (und möglicherweise anderen) existiert unter Java1.18 ein Spezialproblem mit irgendwelchen Zugriffen auf über Java Native Interface angesprochene dlls (verfestigte Arbeitshypothese)
s. unten.
}
Du machst einen Java-Agenten. Also unten Typ: Java.
Nun hast du rechts unten ein Fenster. Über den ganz linken Button "Edit Project" kannst du 3rd party jars/zips einbinden. Es öffnet sich ein neues Fenster.
In meinen Fall navigiere ich bei Base Directory zu D:\SQLLIB\java11.
Auf der linken Seite erscheint db2java.zip. Dann klicke ich auf Add/Replace Files und klicke dann auf OK.
Jetzt sind die Klassen da.
Nix mehr ClassNotFoundException.
Weg 2:
Du kannst in der Notes.ini des Servers eine Zeile JavaUserClasses einfügen, wo du die jars/zips eintragen kannst, die auf diesen NotesServer zusätzlich benutzt werden sollen. Ich meine mich zu erinnern, dass dies Performance-mässig besser ist als für jeden Agenten einzeln zips zu importieren. Der Classloader der Notes-VM läd diese Zusatz-Klassen nämlich beim Starten in den Speicher.
Wenn du weitere Fragen hast, stelle sie.
Das von mir propagierte umsonst-Buch "Handbuch der Java Programmierung" (
http://www.javabuch.de) hat mit Nummer 42 ein eigenes Kapitel, das sicher ziemlich gut ist. Ich benutze für JDBC auch oft das entsprechende Kapitel im Sun Tutorial.
http://java.sun.com/docs/ . Hier Link zu The Java Tutorial.
Gruss Axel
P.S.
Das ist alles ein bischen retro.
Aus 2 Gründen:
1. In J2EE Servern wie Tomcat oder Websphere arbeitet man this days mit sogenannten Connection Pools. In Notes-Agenten musst du jedes mal eine neue Connection zu der Datenbank erzeugen. Bei J2EE werden diese Connections nach Gebrauch in den Pool getan und können wiederverwendet werden. Das ist effizienter.
2. Man geht immer mehr davon ab JDBC wirklich zu koden. Das hat tiefere Gründe als dem Programmierer Tipperei zu ersparen. Es gibt nun verschiedene, sehr ernstzunehmende Frameworks, Spezifikationen oder verwandtes, die für den Programmierer transparente Persistenz-Services (anderes Wort für Integration mit RDBMS) anbieten und somit den Programmierer vor Arbeit und menschlichen Fehlern bewahren.
Man spricht hier von Object/Relational Mapping.
Es geht darum dass Objekt-Modelle eines Business-Problems und deren persistenten Repräsentation in RDBMS etwas sehr unterschiedliches sind (Object-Relational impedance missmatch). Objekt-Modelle modellieren den jeweiligen Business Process, indem dieser in miteinander kommunizierende Objekte dargestellt wird, während sich Datenbank Schemas nach technisch-mathematischen Konzepten ausrichten (normalisieren -> Redundanz vermeiden).
Beliebt sind derzeit Hibernate und Castor (open Source). Auch Entity Enterprise Java Beans bieten Object Relational Mapping an. Daneben existieren noch Producte wie Cocobase oder Toplink. JDO ist eine neue Spezifikation, für die es bereits >20.
Hersteller-Implementierungen gibt. JDO ist derzeit ein sehr hippes Thema in Java-Land.
Wobei viele dieser Produkte, Frameworks und Sonstiges über die Persistenzierung in RDBMS hinausgehen sondern auch automatisierte Persistenz in Files, nicht RDBMS-DB2 wie LoNO oder xml anbieten.