C-JDBC Einführung Schnelleinstieg 1 Inhaltsverzeichnis Einführung....................................................................................................................................................................3 Herunterladen von C-JDBC.........................................................................................................................................6 Installation von C-JDBC..............................................................................................................................................7 Die C-JDBC Verzeichnisstruktur..............................................................................................................................10 Beschreibung der RAIDb1 Beispielanwendung.......................................................................................................12 Beschreibung der distributed-raidb1 Beispielanwendung........................................................................................13 Ausführen der RAIDb1 Beispielanwendung............................................................................................................14 Starten der Beispielanwendung............................................................................................................................14 Verwendung von SquirrelSQL, der SQL Konsole..............................................................................................15 Die grafische Administrationskonsole: Erste Schritte..............................................................................................18 Starten der grafischen Benutzerschnittstelle.......................................................................................................18 Deaktivierung eines Backends.............................................................................................................................20 Reaktivieren eines Backends................................................................................................................................20 Sicherung eines Backends....................................................................................................................................21 Hinzufügen eines Backends zum Cluster............................................................................................................22 Überwachung von C-JDBC Komponenten...............................................................................................................24 Fehlerberichte erstellen.............................................................................................................................................27 Weitere Dokumente...................................................................................................................................................29 2 Einführung Dieses Dokument ermöglicht Ihnen den schnellen und einfachen Einstieg in die Datenbank Clustering Software C-JDBC. Zur Ausführung der in diesem Dokument aufgeführten Beispielanwendungen benötigen Sie eine Java VM entsprechend J2SE 1.3 oder höher. C-JDBC ist eine Middleware zum Aufbau und Betrieb von Datenbank-Clustern, mit der beliebigen Java Anwendungen (Standalone Anwendung, Servlet oder EJB Container usw.) mit Hilfe von JDBC(tm) ein vollständig transparenter Zugriff auf Datenbank-Cluster ermöglicht wird. Bestehende Anwendungen (Client Anwendungen, Applikationsserver oder Datenbank-Server) können unverändert eingesetzt werden. Einzige Voraussetzung ist die Verwendung von JDBC. C-JDBC verfügt über eine flexible Architektur, mit deren Hilfe Skalierbarkeit, Hochverfügbarkeit und FailoverFunktionalitäten für Ihre Datenbanken realisierbar sind. C-JDBC basiert dabei auf dem RAIDb-Konzept (Redundant Array of Inexpensive Databases), also der Bildung redundanter Arrays kostengünstiger Datenbanksysteme. Die Datenbanken werden dabei repliziert und über verschiedene Knoten verteilt, während C-JDBC die Lastverteilung übernimmt und Datenbankabfragen an die ensprechenden Knoten delegiert. C-JDBC ist freie Software und entstammt der Open Source Initiative. C-JDBC verfügt über einen generischen JDBC Treiber, der von den Anwendungen verwendet wird. Dieser Treiber reicht die SQL Abfragen an den C-JDBC Controller, der diese dann an den Cluster replizierter Datenbanken weitergibt. Für Lesezugriffe werden dabei Load Balancing-Mechanismen angewendet, für Schreibzugriffe hingegen Broadcasting-Mechanismen). C-JDBC kann mit beliebigen RDBMS eingesetzt werden, die über einen JDBC Treiber verfügen, also mit nahezu allen am Markt befindlichen Datenbanken. C-JDBC principle C-JDBC erlaubt die Bildung beliebiger Cluser-Konfigurationen und dies auch mit heterogenen Datenbanksystemen. Die wesentlichen Merkmale von C-JDBC sind Skalierbarkeit der Performanz, 3 Fehlertoleranz und Hochverfügbarkeit. Weitere Merkmale wie Monitoring, Protokollierung, Caching von SQL Abfragen sind ebenfalls verfügbar. Die offene Architektur von C-JDBC ermöglicht die problemlose Erweiterung durch Plugins (zum Beispiel für spezifische Verteilungsmechanismen, Lastverteilung, Verbindungsmanager, Caching Policies usw.). 4 5 Herunterladen von C-JDBC Die aktuelle Version von C-JDBC erhalten Sie auf der Objectweb-Internetseite: http://forge.objectweb.org/project/showfiles.php?group_id=42 Wählen Sie das aktuelle Installationsprogramm aus, indem Sie auf den folgenden Link klicken: c-jdbc-x.y-bin-installer.jar Bitte ersetzen Sie x und y durch die entsprechenden Versionsnummern. Die Beispiele dieses Dokumentes basieren auf der Version 1.0.1. Nach dem Herunterladen können Sie das Installationsprogramm durch Doppelklick auf die jar-Datei starten. Sollte dies auf Ihrem System nicht funktionieren, starten Sie das Installationsprogramm bitte manuell über die Kommandozeile (Windows: cmd.exe, Linux: terminal). Geben Sie hierzu folgenden Befehl ein: java -jar c-jdbc-1.0-1-bin-installer.jar Nach einem kurzen Moment sollte nun das Installationsprogramm starten: 6 Installation von C-JDBC Lesen und akzeptieren Sie zunächst die von C-JDBC verwendete LGPL Lizenz. Wählen Sie nun das Verzeichnis aus, in dem die Dateien installiert werden sollen. Sollte dieses Verzeichnis noch nicht existieren, wird es vom Installationsprogramm automatisch erzeugt. Achtung: Sollte das Zielverzeichnis bereits vorhanden sein, werden eventuell vorhandene Dateien überschrieben! 7 Wählen Sie nun die zu installierenden Komponenten aus: Beschreibung der Komponenten C-JDBC Driver Dies ist der JDBC Treiber, der vom Anwendungsprogramm (z. B. Tomcat, JOnAS, JBoss) für den Zugriff auf die Datenbank benötigt wird. C-JDBC Controller Dies ist der Kernbestandteil von C-JDBC. Mit Hilfe des C-JDBC Controllers werden die Anfragen des C-JDBC Drivers verwaltet und verarbeitet. C-JDBC Administration Console Die C-JDBC Administrationskonsole dient der Administration und Überwachung von CJDBC und bietet neben statistischen Auswertungsmöglichkeiten auch Möglichkeiten zur Wiederaufnahme von Datenbanken im Fehlerfall. Die Administrationskonsole kann entweder über eine grafische Benutzerschnittstelle oder eine Textkonsole bedient werden. C-JDBC Documentation Enthält die C-JDBC Referenzdokumentation inklusive einer ausführlichen Beschreibung der Funktionsweise von C-JDBC sowie der spezifischen Konfigurationsmöglichkeiten. C-JDBC Demo Enthält verschiedene Beispielanwendungen, die HypersonicSQL als Replikationsdatenbank verwenden. Hinweis: Wenn Sie dieses Paket nicht installieren, erfolgt ebenfalls keine Installation von HypersonicSQL. 8 Squirrel Squirrel ist eine SQL Clientanwendung mit grafischer Benutzerschnittstelle. Mit Squirrel erhalten Sie den Zugriff auf die Inhalte und Metadaten Ihrer Datenbanktabellen. Squirrel ermöglicht zudem die Ausführung von SQL-Abfragen innerhalb und ausserhalb von Transaktionen. Zur Bearbeitung der Beispiele dieses Dokumentes empfehlen wir die vollständige Installation aller verfügbaren Komponenten wie nachfolgend beschrieben: Nach der Installation aller ausgewählten Komponenten ist die Installation abgeschlossen. Das Installationsprogramm erzeugt im Rahmen des Installationsvorgangs ein Skript zur Deinstallation, mit dessen Hilfe Sie eine einfache und vollständige Deinstallation von C-JDBC vornehmen können. 9 Die C-JDBC Verzeichnisstruktur Nach erfolgreicher Installation stellt sich die Verzeichnisstruktur von C-JDBC wie folgt dar: 3rdParty Enthält Bibliotheken von Drittanbietern, wie zum Beispiel HypersonicSQL und Squirrel. bin Enthält alle Skripte zum Starten und Beenden der Programmkomponenten und der Beispielanwendungen. config Enthält die verschiedenen Konfihurationsdateien (Controller, VirtualDatabase, Loggers, Sprachdateien ...). 10 doc Enthält das Anwenderhandbuch sowie verschiedene Konfigurationsbeispiele. drivers Enthält die C-JDBC Treiber-Dateien. Zur Laufzeit von C-JDBC werden ggf. weitere Treiber in dieses Verzeichnis entpackt. lib Uninstaller Enthält ein Skript zur vollständigen Deinstallation von C-JDBC. xml Enthält die von C-JDBC verwendeten DTD- und XSLDateien, so zum Beispiel die DTDs zur Validierung der Controller-Informationen sowie der Konfigurationen der virtuellen Datenbanken. Enthält die von C-JDBC verwendeten JavaBibliotheken. log Enthält die vom Logging System erzeugten Protokolle. Der C-JDBC Report wird ebenfalls in dieses Verzeichnis generiert. 11 Nachfolgend erhalten Sie eine kurze Beschreibung der im bin-Verzeichnis des C-JDBC Installationsverzeichnis enthaltenen Skriptdateien. • C-JDBC Skriptdateien: console.bat/.sh: Startet die Administrationskonsole. Sofern Sie über eine grafisches System verfügen (MS Windows, X Windows), startet das Programm mit der grafischen Betzerschnittstelle, andernfalls wird es im Textmodus gestartet. controller.bat/..sh: Startet den Controller mit der voreingestellten Konfigurationsdatei: $CJDBC_HOME/config/controller/controller.xml requestplayer.bat/.sh: Ermöglicht das Abspielen einer durch den Controller aufgezeichneten Sitzung. xmlvalidator.bat/.sh: Dieses Skript validiert XML-Dateien anhand der entsprechenden DTD. Die voreingestellte DTD wird dabei zur Validierung der virtuellen Datenbanken verwendet. • Beispielanwendungen: demo-distributed-raidb1.bat/.sh: Startet die Beispielanwendung mit verteiltem Controller. demo-raidb1.bat/.sh: Eine weitere Beispielanwendung, die einen Controller in Verbindung mit zwei Hypersonic Datenbanken verwendet. • Software von Drittanbietern: squirrel.bat/.sh: Die grafische SQL-Clientanwendung. hsqldb.bat/.sh: Startet eine einfache hsqldb DBMS Datenbank. hsqldb ist ein einfacher Java SQL Server. Er wird für die Anwendungsbeispiele innerhalb dieses Dokumentes verwendet. 12 Beschreibung der RAIDb1 Beispielanwendung Die RAIDb1 Beispielanwendung startet insgesamt drei HypersonicSQL Datenbank-Server. 1. Das erste Datenbank-Backend enthält die Hauptdatenbank (in diesem Beispiel “localhost”) 2. Das zweite Datenbank-Backend enthält die Failover-Datenbank (in diesem Beispiel “localhost2”) 3. Das dritte Datenbank-Backend dient der Speicherung von Wiederherstellungsinformationen sowie der Protokollierung von Wiederherstellungsanfragen. Nachdem die drei Datenbankserver gestartet sind, startet die Beispielanwendung einen Controller auf Port 25323 und lädt automatisch eine virtuelle Datenbank namens „myDB“, deren Schema den beiden Backends entspricht. Nachfolgend sehen Sie das RAIDb1 Replikationsschema. In diesem Beispiel enthalten beiden Backends die gleichen Daten. Das Schema wird durch die folgenden Create-Statements definiert: CREATE TABLE ADDRESS( ID INTEGER NOT NULL PRIMARY KEY, FIRSTNAME VARCHAR(255), LASTNAME VARCHAR(255), STREET VARCHAR(255), CITY VARCHAR(255)) CREATE TABLE PRODUCT( ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(255), COST DECIMAL) CREATE TABLE DOCUMENT( ID INTEGER NOT NULL PRIMARY KEY, ADDRESSID INTEGER, TOTAL DECIMAL) CREATE TABLE PPOSITION( DOCUMENTID INTEGER NOT NULL, PPOSITION INTEGER NOT NULL, PRODUCTID INTEGER,QUANTITY INTEGER, PRICE DECIMAL) Mit Hilf von Squirrel können Sie eine Verbindung zum C-JDBC Controller herstellen und somit eine Sicht auf die entsprechende Datenbank erzeugen. Die Verbindung zum Controller wird über die folgende URL hergestellt: jdbc:cjdbc://localhost/myDB 13 Beschreibung der distributed-raidb1 Beispielanwendung Die distributed-raidb1 Beispielanwendung startet insgesamt vier HypersonicSQL Datenbank-Server. 1. Zwei Backend für einen Controller auf Port 25322. 2. Zwei Backends einen weiteren Controller auf Port 25323. In diesem Beispiel wurde kein Wiederherstellungsprotokoll definiert. Sie können diese Funktionalität jedoch auf einfache Weise durch Hinzufügen der entsprechenden Datein aus der RAIDb1 Beispielanwendung für jeden Controller ergänzen. Das Beispielprogramm startet beide Controller. In der Ausgabe erhalten Sie dabei Informationen bezüglich des Verbindungsaufbaus zwischen den beiden Controllern. Das Datenbankschema dieses Clusters entspricht dabei dem im Rahmen der RAIDb1 Beispielanwendung definierten Schemas. Da dieses Beispiel ebenfalls das bereits in der RAIDb1 Beispielanwendung beschriebene Verteilungsschema verwendet, enthalten nun alle vier Backends die gleichen Daten. Der Zugriff auf diesen Cluster erfolgt über die folgende URL: jdbc:cjdbc://localhost:25322,localhost:25323/myDB Die im vorgehenden Beispiel genannte URL (jdbc:cjdbc://localhost/myDB) funktioniert an dieser Stelle ebenfalls, da der Treiber selbständig die Cluster-Struktur erkennt und die erforderlichen Informationen ermittelt. 14 Ausführen der RAIDb1 Beispielanwendung Starten der Beispielanwendung Führen Sie nun das Skript raidb1.sh (Unix) oder raidb1.bat (Windows)im $CJDBC_HOME/bin Verzeichnis aus. Wenn Sie das Skript aus der Shell oder Kommandozeile starten, erhalten Sie folgende Ausgabe: Wie Sie erkennen, werden HypersonicSQL Datenbanken und ein C-JDBC Controller gestartet. Die Verwaltung und der Zugriff auf diese beiden Datenbanken erfolgen dabei über den Controller. Hinweis: Unter Windows müssen Sie eine beliebige Taste drücken, um den Zustand der beiden Datenbanken (“Listening ...”) anzuzeigen. 15 Verwendung von SquirrelSQL, der SQL Konsole Nun starten wir Squirrel mit Hilfe des entprechenden Skripts (squirrel.sh/.bat) im bin-Verzeichnis). Nach dem Start von Squirrel erhalten Sie folgende Bildschirmausgabe: Die mit C-JDBC ausgelieferte Version von Squirrel ist bereits mit dem C-JDBC Treiber und dem HypersonicSQL Treiber vorkonfiguriert. Wie Sie sehen, wurden drei Aliasnamen angelegt: myCJDBCdb(port 25322) Dies ist die Datenbank, die von der Anwendung verwendet wird. Die Anbindung erfolgt dabei mit Hilfe des C-JDBC Treibers. myHSQLdb (port9001) Dies ist eines der beiden Backend, das von dem Controller verwaltet wird. myHSQLDB(port9002) Hierbei handelt es sich um die Replikation der vorgenannten Datenbank. Mit dem Doppelklick auf einen Aliasnamen öffnet sich das Authentifizierungs-Fenster: 16 Alle erforderlichen Eingabefelder sind bereits mit den korrekten Werten belegt, klicken Sie daher einfach auf „Ok“. Sie erhalten nun eine Anzeige der Inhalte und Metadaten der Datenbank sowie der enthaltenen Datenbanktabellen. Mit einem Klick auf den SQL-Reiter gelanden Sie zur SQL-Konsole, über die Sie beliebige SQL-Statements zur Ausführung bringen können. Geben Sie einfach Ihre Anfrage in das Textfeld ein und klicken Sie auf den nachfolgenden Button, um die Anfrage auszuführen: 17 18 Die grafische Administrationskonsole: Erste Schritte Starten der grafischen Benutzerschnittstelle Mit Hilfe der Skripte gui.sh bzw. gui.bat können Sie die grafische Benutzerschnittstelle starten: Nachdem die Anwendung vollständig geladen wurde, erhalten Sie folgende Anzeige: Zur weiteren Bearbeitung müssen Sie zunächst eine virtuelle Datenbank auswählen. Klicken Sie dazu auf den 19 Controller der oberen linken Ecke des Bearbeitungsfensters: Nun sehen Sie die virtuelle Datenbank in dem darunterliegenden Panel: Ein Klick auf die virtuelle Datenbank öffnet den Authentifizierungs-Dialog. Geben Sie hier die Informationen ein, die in der Konfigurationsdatei der virtuellen Datenbank spezifiziert wurden. Im Fall der RAIDb1 Beispielanwendung erfolgt die Anmeldung mit admin und ohne Angabe eines Passworts. Das Bearbeitungsfenster wird nun automatisch aktualisiert und stellt nun die entsprechenden Informationen dar: Wie Sie sehen, sind beide hsqldb Backends aktiviert und funktionsbereit. 20 Deaktivierung eines Backends Wenn Sie ein Backend-Symbol in die Spalte „disabled“ verschieben, erscheint automatisch eine Dialog, in dem Sie weitere Informationen zum Checkpoint angeben können. Dieser Checkpoint kann später im Rahmen der Wiederherstellung verwendet werden. In diesem Beispiel werden wir das zweite Backend (“localhost2”) deaktivieren. Verschieben Sie dazu das entsprechende Symbol in die Spalte „disabled“. In der Checkpoint-Liste werden die bereits definierten Checkpoints angezeigt. Geben Sie nun einen Namen für den neuen Checkpoint an (z. B. 'firstcheck') und drücken Sie „Ok“. Das Backend wird nun deaktiviert. Es werden somit keine weiteren Anfragen von C-JDBC Controller an dieses Backend gerichtet. Reaktivieren eines Backends Sie können die erfolgreiche Deaktivierung des Backends mit Hilfe von Squirrel überprüfen. Wenn Sie versuchen, einige Werte einzugeben, werden Sie feststellen, dass diese nur in dem aktiven hsqldb Backend ('localhost') erscheinen. Um das deaktivierte Backend 'localhost2' wieder zu aktivieren, verschieben Sie das Backend-Symbol einfach 21 von der Spalte „disabled“ in die Spalte „enabled“. Hierdurch wird erneut der Checkpoint-Dialog geöffnet: Wählen Sie nun den Checkpoint aus, den Sie beim Deaktivieren des Backends festgelegt haben und drücken Sie „Ok“. Hierdurch wird das Backend in den Wiederherstellungszustand versetzt. Während sich das Backend im Wiederherstellungszustand befindet, erfolgt ein Abgleich mit den während der Deaktivierungsphase erfolgten Änderungen. Dieser Synchronisationsvorgang ist nach einigen Sekunden abgeschlossen. Sicherung eines Backends Die beiden Backends sind nun wieder online. Verschieben Sie nun eines der beiden Backend-Symbole in die Spalte „Backup“. Hierdurch erscheint wieder der bereits bekannte Checkpoint-Dialog. Geben Sie eine Bezeichnung für den neuen Checkpoint ein, zum Beispiel „backuptime“, und drücken Sie „Ok“. 22 Während des Sicherungsvorgangens wird das Backend wie folgt dargestellt: Nach Abschluss der Sicherung erscheint in der Spalte „Restore“ ein neues Symbol: Während der Sicherung können weiterhin Anfragen an den C-JDBC Controller gerichtet werden, da das zweite Backend weiterhin aktiv ist. Sie können die so erzeugte Sicherungsdatei jederzeit (z. B. nach einem Datenbank-Ausfall) wieder einspielen und den ursprünglichen Zustand wiederherstellen. Hinzufügen eines Backends zum Cluster Der Start eines neuen HypersonicSQL Prozesses erfolgt mit hsqldb.sh bzw. hsqldb.bat. Starten Sie nun einen neuen Prozess unter Angabe eines weiteren Ports (z. B. Port 9010): ./hsqldb.sh -port 9010 Hierdurch wird ein neuer Server-Prozess gestartet. Hierbei sollte folgende Ausgabe entstehen: server.properties not found, using command line or default properties Opening database: test HSQLDB server 1.7.1 is running 23 Use SHUTDOWN to close normally. Use [Ctrl]+[C] to abort abruptly Fri Aug 20 18:50:33 CEST 2004 Listening for connections ... Fügen Sie nun das neue Backend dem bestehenden Cluster hinzu. Klicken Sie hierzu mit der rechten Maustaste auf ein bestehendes Backend und wählen Sie den Befehl 'Create new backend': Hierdurch öffnet sich ein Dialog, in dem Sie die erforderlichen Informationen zu dem neuen Backend erfassen können: Im Feld 'New Backend Name' geben Sie den Namen des neuen Backends an (zum Beispiel 'localhost3'). Im Feld 'New URL' geben Sie die URL an, über die das neue Backend verbunden werden soll. Im Regelfall entspricht diese URL den bereits bestehenden URLs der anderen Backends, es muss lediglich die Portnummer angepasst werden. In diesem Beispiel verwenden wir die folgende URL: 'jdbc:hsqldb:hsql://localhost:9010' . Das Backend 'localhost3' erscheint nun in der Spalte „disabled“: Bewegen Sie das Backend-Symbol mit Hilfe von Drag&Drop nun auf die im vorhergehenden Schritt erzeugte Sicherungsdatei: Der Controller führt nun die Initialisierung des neuen Backends auf Basis der Sicherungsdatei durch. Nach Abschluss des Wiederherstellungsvorgangs verbleibt das Backend im deaktivierten Zustand. Sie können das Backend nun wie bereits beschrieben aktivieren. Verwenden Sie hierbei den Checkpoint check1. Sie verfügen nun über einen Cluster mit drei Backends. Dieser Vorgang kann so oft wiederholt werden, bis die erforderliche Anzahl der Backends erreicht ist. 24 Überwachung von C-JDBC Komponenten Durch den Klick mit der rechten Maustaste auf einen Controller erhalten Sie das folgende Kontextmenü: Wählen Sie „Monitor Controller“ aus. Hierdurch wird der folgende Dialog aufgerufen: 25 Sie können nun die gewünschten Monitoring-Elemente aktivieren: Das Monitoring erfolgt online, so dass Sie die Informationen nur im geöffneten Fenster verfügbar sind. Nachfolgend ein Beispiel, das die Speichernutzung des Controllers darstellt: 26 Im C-JDBC-Menü finden Sie einige nützliche Funktionen: Save... Hierdurch wird die Position aller geöffneten Monitoring-Fenster gespeichert. Beim nächsten Aufruf des Monitoring-Werkzeuges werden diese Fenster automatisch wiederhergestellt. Load... Stellt die zuletzt gespeicherten Fensterpositionen wieder her. Close All graphs Schliesst alle geöffneten Fenster. Set options. Ermöglicht die Festlegung einiger Optionen: 27 --> Wie oft sollen die Daten abgerufen werden (-1 bedeutet immer ...) --> Wie oft sollen die Daten vor der Anzeige zwischengespeichert werden? --> Frequenz des Datenabrufs. (in Millisekunden) --> Zeitfenster des Monitoring-Fensters. (in Millisekunden) Refresh Erneuert die Bildschirm anzeige nach einer Konfigurationsänderung des Controllers , zum Beispiel nach dem hinzufügen oder Löschen von Backends oder virtuellen Datenbanken. 28 Fehlerberichte erstellen Im Falle eines Fehlers können Sie einen Fehlerbericht erstellen, um so das C-JDBC Team bei der Fehlersuche und -behebung zu unterstützen. Die Protokollkonfiguration kann jederzeit über das Kontextmenü des Controller aufgerufen werden: Hierdurch erfolgt die Anzeige der Konfigurationsdatei log4j.properties im LogConfig TabPanel. Hier können Sie alle erforderlichen Änderung an den in C-JDBC verwendeten Protokollierungseinstellungen vornehmen. In diesem Fall soll für alle Protokollaktivitäten der DEBUG-Modus eingeschaltet werden: Klicken Sie daher im entsprechenden Kontextmenü auf „Set loggers to DEBUG“: 29 Hierdurch werden in den Protokollen die zusätzlichen DEBUG-Informationen ausgegeben. Wiederholen Sie nun den Programmaktivität oder den Arbeitsschritt, in dem der Fehler in C-JDBC aufgetreten ist. Wählen Sie nun aus dem Kontextmenü die Funktion „Report“ auf: Hierdurch wird der gesamte Report im Info TabPanel angezeigt: Es handelt sich hierbei um eine Darstellung der Datei cjdbc.report, die sich in dem log-Verzeichnis der C-JDBC Installation befindet. Diese Datei enthält: Java Einstellungen (Machine, OS, JVM Version ...) Konfigurationsangaben zum Controller und den virtuellen Datenbanken die vollständige Protokollausgaben Diese Angaben erlauben uns die Fehlersuche auch in komplexen Sachverhalten. 30 Weitere Dokumente Die aktuelle Dokumentation zu C-JDBC finden Sie im Dokumentationsbereich auf der C-JDBC Webseite: http://c-jdbc.objectweb.org/doc/index.html Das vollständige Anwenderhandbuch finden Sie hier: http://c-jdbc.objectweb.org/current/doc/userGuide/userGuide.pdf Eine allgemeinere Darstellung von C-JDBC erhalten Sie unter: http://c-jdbc.objectweb.org/current/doc/C-JDBC_Solutions_Linux_2004.ppt Sollten Sie Fragen zu den Einsatzmöglichkeiten von C-JDBC haben oder Änderungs- und Erweiterungswünsche einbringen wollen, schreiben Sie uns bitte eine E-Mail an: [email protected] Vielen Dank! 31