View Full Version : SSL-Problem mit jdbc
Danke,
Und was schließe ich jetzt daraus?
Wir haben schon eine JDBC-Verbindung zu einer Oracle-DB und einer SQL-Server 2000 erfolgreich zum Laufen gebracht. Mag sein, daß es bessere Methoden gibt. Aber nach dem die div. Fremdfirmen unfähig sind, ordentliche Schnittstellen bereitzustellen, bleibt natürlich alles bei uns (der i5-Truppe) hängen.
Auf die Schnelle (Anfang Nov.) soll eine Schnittstelle gebastelt werden, denn dann geht ein PC-Fremdsystem in Echtbetrieb und ich hänge jetzt schon drei Tage mit dem blöden jdbc-Zugriff herum.
Ob es angesichts der Tatsachen sinnvoll ist, mir jetzt noch Java oder sonstiges Frame-Zeug reinzuziehen, sei dahingestellt.
Ich bin mir sicher, es klemmt nur an einer Kleinigkeit.
Dachte mir halt, vielleicht hat jemand von den Profis hier im Forum einen brauchbaren Tipp.
Danke,
Günter
Welche Javaversion wird verwendet?
Ich habe mal kurz bei mir angetestet und kann die Infos aus dem Internet bestätigen:
Mit der Version 1.2 der JDBC-Treiber haben manche Java 1.4 Implementierungen (dazu gehört auch die i5) das SSL Problem. Mit den Treibern davor (1.0, 1.1) hatte ich keine Probleme. Durch Konfigurationseinträge sollte sich das aber auch für die Version 1.4 fixen lassen (laut Internetforen, beschrieben für Linux).
Mit der (Java) Version 1.5 hatte ich mit keinem Treiber ein Problem.
Getestet hab ich in der QSH:
java -Djava.version=1.4 -cp MSSQL.jar:ext/sqljdbc_1.2/deu/sqljdbc.jar com.at.od.kattools.TestMSSQL
Die Default-JVM findet man normalerweise mit
java -version
heraus.
Noch zum Pfad /QIBM/UserData/Java400/ext/sqljdbc.jar
Das funktioniert prinzipiell und ist auch recht reizvoll, weil einfach. Diese Jar's sind 1.) heiße Kanditaten um beim Maschinenwechsel vergessen zu werden.
2.) von jedem Javapgramm zu durchsuchen, egal ob sie immer gebraucht werden oder nur für ein paar bestimmte Fälle. (nicht so relevant im Serverbetrieb, aber langsamer Start bei Einzelaufrufen).
/Robert
Ich mache das seit einiger Zeit mit Oracle ohne Probleme (in beide Richtungen).
Hierzu habe ich den Treiber in mein Home-Verzeichnis kopiert und entsprechend im CLASSPATH angegeben.
Der Treiber wird automatisch gefunden.
Ich benutze als Basis die Programme von Dieter Bender mit Modifikation.
Das schöne daran ist, dass ich die Programme auch unter z.B. Eclipse testen kann.
Danke,
An Robert:
Wir verwenden Java 1.5 auf i5.
Danke Fuerchau!
Wir haben auch mit Oracle (in beiden Richtungen) angefangen und dann von einer SQL-Server 2000 gelesen. Jetzt sollte eben SQL-Server 2005 in beiden Richtungen dazukommen.
Danke noch mal an alle, die gepostet haben.
Ich habe das Problem gelöst und es liegt meiner Meinung nach an M$.
Also es gibt offenbar mehrere Arten, wie man den Connect angeben kann. Ich habe 3 Varianten jeweils gegen 2000 und 2005 getestet. Gegen 2000 gingen 2 von drei Möglichkeiten, gegen 2005 nur eine.
Der Clou ist, daß in der Klassenangabe (oder wie immer der erste Teil im Connect heißt) ein Murx drinnen ist (ich möchte nicht wissen, wieviel Whiskey die MS-Programmierer da intus hatten, als sie das verbrochen haben).
Mal heißt er
com.microsoft.jdbc.sqlserver.SQLServerDriver
und dann wieder
com.microsoft.sqlserver.jdbc.SQLServerDriver
Ich habe kurz zusammengestellt, welche Kombinationen laufen (JDBC-Version 2.0 von Microsoft)
SQL-Server 2000:
=============
1.)
conn = JDBC_ConnProp('com.microsoft.jdbc.sqlserver.SQLSer verDriver'
:'jdbc:microsoft:sqlserver://<Server>:1433' ...
Verbindung ok (conn = 8)
2.)
conn = JDBC_ConnProp('com.microsoft.sqlserver.jdbc.SQLSer verDriver'
:'jdbc:sqlserver://<Server>:1433' ...
Hier wurde die Connect-Url (com.microsoft...) geändert UND der Treiber (zweiter Parm)
Verbindung ok (conn = 8)
3.)
Wird beim zweiten Parm 'jdbc:microsoft:sqlserver://<Server>:1433' wie bei 1.) eingetragen, geht es nicht mehr
conn = JDBC_ConnProp('com.microsoft.sqlserver.jdbc.SQLSer verDriver'
:'jdbc:microsoft:sqlserver://<Server>:1433' ...
keine Verbindung (conn =0)
SQL-Server 2005:
=============
1.)
conn = JDBC_ConnProp('com.microsoft.jdbc.sqlserver.SQLSer verDriver'
:'jdbc:microsoft:sqlserver://<Server>:1433' ...
Verbindung ok (conn = 8)
2.)
conn = JDBC_ConnProp('com.microsoft.sqlserver.jdbc.SQLSer verDriver'
:'jdbc:sqlserver://<Server>:1433' ...
Hier wurde wieder die Connect-Url (com.microsoft...) geändert UND der Treiber (zweiter Parm)
keine Verbindung (conn = 0)
3.)
Wird beim zweiten Parm 'jdbc:microsoft:sqlserver://<Server>:1433' wie bei 1.) eingetragen, geht es nicht mehr
conn = JDBC_ConnProp('com.microsoft.sqlserver.jdbc.SQLSer verDriver'
:'jdbc:microsoft:sqlserver://<Server>:1433' ...
keine Verbindung (conn = 0)
================================================== =============================
Da mir dieses Herumgehangel eher unheimlich als sympatisch ist, verwende ich jetzt den OpenSource JTDS-Treiber.
Version 1.2.2
SQL-Server 2000 und 2005:
=============
1.)
conn = JDBC_ConnProp('net.sourceforge.jtds.jdbc.Driver'
:'jdbc:jtds:sqlserver://<Server>:1433' ...
Einige dieser Infos habe ich von der Seite SQL mit Java (http://www.torsten-horn.de/techdocs/java-sql.htm) von Thorsten Horn
Nochmal Danke an alle und sorry für den langen Beitrag,
Günter
kaum macht mans richtig,schon funzt es:
- die voll qualified Treiberklasse wird bei der Registrierung des Treibers verwendet
- welche Treiberklasse verwendet wird, entscheidet das Sub Protokoll bei der URL (hinter dem Doppelpunkt nach :jdbd), selbiger muss irgendwann (!!!) mal registriert wordensein
- welche Implementierung (Version) dann verwendet wird, entscheidet der Classpath
=> ohne Java Kenntnisse und dann auch noch mit RPG JNI wird das eher nix q.e.d
D*B