Search the FirstSpirit Knowledge Base
Hallo,
wir haben eine lokale FirstSpirit5 Installation eingerichtet und wollen eine MSSQL Datenverbindung aufbauen.
Wähle ich aber in der Verbindungskonfiguration bei Layer einen der MSSQL-Server aus erscheint die Meldung "Class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' not found".
Die Konnektoren der anderen DBMS fehlen auch. Das Testprojekt, welches bei der Installation mitinstalliert wurde funktioniert.
Hier die Ausführliche Fehlermeldung:
Client Version: 5.0.114.54807
Java Version: 1.6.0_30 Sun Microsystems Inc.
FSVersion=5.0.114.54807#3209;JDK=1.6.0_30 64bit Sun Microsystems Inc.;OS=Windows Server 2008 R2 6.1 amd64;Date=19.12.2012 15:26:56
java.sql.SQLException: Class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' not found!
at de.espirit.firstspirit.content.ContentManagerImpl.testLayerProperties(ContentManagerImpl.java:525)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)
at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:92)
at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:67)
at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)
at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:582)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:549)
Sind bestimmte Module notwendig um externe Datenbanksysteme verwenden zu können?
Vielen Danke vorab.
Andreas
Hallo Andreas,
für die Datenbank-Konnektoren muss ein eigenes Modul gebaut werden, welches die entsprechenden jars für die Treiberdateien enthält z.b. mysql-connector-java-VERSION-bin.jar.
In Ihrem Fall müssten Sie die Datei sqljdbc.jar bzw. sqljdbc4 in ein Modul packen, vorher die module.xml entsprechend konfigurieren und danach das Modul installieren.
Für den Bau des Moduls verweise ich auf das Entwicklerhandbuch für Komponenten, Kapitel 3.15 Komponentenlose Modul-Implementierung (JDBC-Connector-Modul). Hier wird der Bau des MySQL-Connector-Moduls schrittweise beschrieben.
Desweiteren finden Sie auch in der Dokumentation für Administratoren (ab Kapitel 4.8.2.1 Treiber-Dateien) hilfreiche Informationen. Hier ist auch ein Beispiel für Postgres gegeben.
Es besteht auch die Möglichkeit, die entsprechden jar-Dateien, die die Treiber enthalten in das /shared/lib - Verzeichnis von FirstSpirit zu kopieren. Dies ist allerdings nicht der empfohlene Weg und hat einige Nachteile, die auch in den Dokumentationen beschrieben sind.
Der empfohlene Weg ist also in jedem Fall der Bau eines Connector-Moduls.
Freundliche Grüße
Ismail
Hallo Ismail,
vielen Dank für die schnelle Antwort. Ich werde es so versuchen.
Viele Grüße
Andreas
Gibt es ein fertiges Beispiel-Modul für die Anbindung eines FirstSpirit 5 Servers an eine MSSQL 2008 Datenbank?
Im Dialog der Datenbankeigenschaften kann man unter "Verbindungskonfiguration" den MSSQL Server 2005 Layer wählen, erhält dann aber als Fehlermeldung:
Fehler:Class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' not found!
Sie oben (Posting von Ismail). Aus lizenztechnischen Gründen ist es e-spirit nicht erlaubt, den MSSQL Treiber auszuliefern.
OK, verstanden
Dann basteln wir ein neues module.xml. Die aktuellen .jar Files (sqljdbc4.jar / sqljdbc.jar) habe ich bereits.
<!DOCTYPE module SYSTEM "../lib/module.dtd">
<module>
<name>MSSQL_JDBC_Driver_4_0</name>
<version>4.0</version>
<description>JDBC Driver for SQL Server databases</description>
<vendor>Microsoft</vendor>
<components>
<public>
<name>MSSQL_JDBC_Driver_4_0</name>
<description>Provides the JDBC Driver for the FirstSpirit Server</description>
<class>com.microsoft.sqlserver.jdbc.SQLServerDriver</class>
<resources>
<resource scope="module">lib/sqljdbc4.jar</resource>
</resources>
</public>
</components>
<configuration>
<layerclass>de.espirit.or.impl.mssql.MSSQL2005Layer</layerclass>
<DRIVER>com.microsoft.sqlserver.jdbc.SQLServerDriver</DRIVER>
</configuration>
</module>
Der Connect-String schaut in etwa so aus:
jdbc.DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.PASSWORD=passwort
jdbc.URL=jdbc:sqlserver://dbserver.domain.com:1433;databasename=database_xy;selectMethod=cursor
jdbc.USER=sa
jdbc.layerclass=de.espirit.or.impl.mssql.MSSQL2005Layer
module=MSSQL_JDBC_Driver_4_0