-
Zitat von Ottersberg
com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
WARNUNG: TDSChannel ( ConnectionID:1 TransactionID:0x0000000000000000) SSL handshake failed: null
com.microsoft.sqlserver.jdbc.SQLServerException: Der Treiber konnte keine sichere Verbindung mit SQL Server über die SSL (Secure Sockets Layer)-Verschlüsselung herstellen. Fehler: null.
Zu diesem Problem habe ich jetzt etwas gefunden. Siehe "WARNING: TDSChannel" When Attempting to Connect - TechNet Forums
Lösungsvorschläge dort:
1. Verwendung von JDBC-Treiber Version 1.1 anstatt 1.2
2. Anpassung der JSSE (http://publib.boulder.ibm.com/infoce...hajssemain.htm)
Bei Version 1.1 tritt der Fehler nicht mehr auf, dafür aber ein neuer.
Angeblich wird der "Host nicht gefunden". Dazu habe ich noch nichts gefunden.
-
Für den Host benötigst du eine Namensauflösung.
Je nach dem, wie du den Host angibst, wird ein HOSTS-Eintrag, ein DNS-Server oder nur die IP benötigt.
Ist dir die IP bekannt, gib diese direkt an.
Kennt du nur den Namen, mach mal einen Ping aus einer DOS-Box, dann bekommst du die IP.
HOSTS-Einträge werden über
GO CFGTCP
10. Mit TCP/IP-Host-Tabelleneinträgen arbeiten
DNS-Server werden über
12. TCP/IP-Domäneninformationen ändern
eingetragen.
-
Es ist bereits die IP-Adresse angegeben.
Ich habe mich allerdings etwas blöd ausgedrückt. Es ist nicht die Zieldatenbank (MSSQL) unbekannt, sondern es kommt die Meldung die iSeries als Host ist unbekannt.
Um genau zu sein:
Host [iSeries_Name].[Domäne].DE nicht gefunden
-
Da stellt sich mir nun die Frage, wie du die AS/400 adressierst.
Per IP für die AS/400 kannst du auch 127.0.0.1 (Loopback) angeben.
Allerdings gebe ich für die SQL-Verbindung zu AS/400
driver = com.ibm.as400.access.AS400JDBCDriver
url = jdbc:as400://MYSYS/MYLIB
an.
-
Die Verbindung zur AS/400 ist nicht das Problem. Ich habe übrigens den direkten Namen angegeben, damit das Programm ohne Änderungen notfalls auch auf anderen Systemen laufen könnte. Mit localhost geht das dann ja nicht.
Das Problem ist die Verbindung von der AS/400 zum MSSQL-Server, also über "com.microsoft.sqlserver.jdbc.SQLServerDriver" .
Dort kommt obige Rückmeldung.
Es scheint so, als wenn die AS/400 sich mit diesem Systemnamen versucht beim SQL-Server anzumelden. Der Server versucht diesen Namen dann aufzulösen, kann das aber nicht, weil der Name so nicht per DNS auflösbar ist. Das ist jetzt ne Vermutung, dass das so abläuft. Gestern abend kam mir die Idee den Namen einfach mal in die lokale Host-Datei am Server einzutragen. Hat jetzt aber auch nicht den gewünschten Erfolg gebracht. Ich werd mal schauen ob ich was zu der englischen Variante des Fehlers finde. Zu Host nicht gefunden gibt es leider nichts.
-
Ich habe die Lösung gefunden. Wir brauchen dafür scheinbar auf jeden Fall einen DNS-Server auf der iSeries. Siehe: Re: Client "Host not found"
Ich muss mal klären ob das gewünscht ist. In der Zwischenzeit probiere ich erstmal einen Nicht-MS-Treiber.
-
Ich habe jetzt mal den Treiber von jTDS probiert. Mit diesem funktioniert die Verbindung.
-
Hallo,
ad java, javac, ...
- das steht in jeder Java Doku drin (Tooldocs)
- einen guten Einsteiger Kurs hier:
Java Einfuehrung - Kursunterlage
- soweit es As400 Spezifika gibt, findet man die hier:
http://publib.boulder.ibm.com/infoce...zaha/rzaha.pdf
ad oracle und co:
auch das ist kein Hexenwerk, was stimmen muss ist classpath, Treibername und url (und die Versionen von Treiber Datenbank und Java müssen passen).
Auch hierzu gibt es wie überall im Bereich Java massig Information (mit Tutorial und JDBC mr. Google fragen) und die Doku des Treibers enthält neben den Infos über url und Treibername auch elementare Beispiele.
Im übrigen ist es sinnvoll bei solchen Fragen ein wenig Code mit beizufügen, damit man sieht, wos klemmt.
mfg
Dieter Bender
Zitat von Ottersberg
Was classpath und die Standard Java-Programme angeht bin ich leider in der Tat nicht sehr bewandert...
Ziel dieser Aktion ist es Daten von der iSeries auf einen MSSQL-Server zu schreiben. Das Programm würde ich gerne auf der iSeries laufen lassen, weil die iSeries es dann immer ausführen kann, wenn sich am Datenbestand einer Tabelle etwas ändert. Soweit zumindest die Theorie von mir und unserem iSeries-Experten.
Werd ich gleich mal ausprobieren und berichten.
-
Zitat von Fuerchau
jar's sind wie Verzeichnisse zu sehen.
Sie gehören also in den Classpath hinein:
java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java/hello.jar" Hello.
Da hab ich jetzt wieder was dazu gelernt. Ich wußte nicht, dass man das bis auf die Datei nach unten angeben muss. Ich dachte immer der Ordner würde reichen.
Zitat von BenderD
Hallo,
ad java, javac, ...
- das steht in jeder Java Doku drin (Tooldocs)
- einen guten Einsteiger Kurs hier:
Java Einfuehrung - Kursunterlage
- soweit es As400 Spezifika gibt, findet man die hier:
http://publib.boulder.ibm.com/infoce...zaha/rzaha.pdf
ad oracle und co:
auch das ist kein Hexenwerk, was stimmen muss ist classpath, Treibername und url (und die Versionen von Treiber Datenbank und Java müssen passen).
Auch hierzu gibt es wie überall im Bereich Java massig Information (mit Tutorial und JDBC mr. Google fragen) und die Doku des Treibers enthält neben den Infos über url und Treibername auch elementare Beispiele.
Im übrigen ist es sinnvoll bei solchen Fragen ein wenig Code mit beizufügen, damit man sieht, wos klemmt.
mfg
Dieter Bender
Danke dir. Ich werd mir das mal ansehen. Ich hatte zu dem Thema AS/400 auch noch das Redbook "Building Java Applications for the iSeries Server" gefunden. Ist zwar schon was älter hatte aber doch ein paar nützliche Hinweise.
Ich möchte aber nochmal zur Geschwindigkeit kommen. Die hat sich nicht verbessert.
Die erste Ausgabe "Inhalt der AS/400" kommt nach 30 Sekunden.
Die zweite Ausgabe "Treiber geladen" nach 60 Sekunden gefolgt von der Datenbankausgabe und der Ausgabe "Inhalt von MSSQL".
Die Ausgabe "Treiber geladen" und die zweite Datenbankausgabe dann nach 90 Sekunden.
Die Tabellen sind identisch und haben jeweils 23 Zeilen.
Ich starte das mit folgendem Befehl:
Code:
java -classpath "/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar:/Java/jtds-1.2.2.jar:/Java/Lesetest.jar" Lesetest
Das bezieht sich auf folgenden Code:
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Lesetest {
public static void main(String[] args)
{
String system = "[i5-Name]:80";
String userId = "[user]";
String password = "[passwort]";
String url = "jdbc:as400://" + system + ";translate binary=true";
try {
System.out.println("Inhalt der AS/400:");
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
Connection conn = DriverManager.getConnection(url,userId, password);
System.out.println("Treiber geladen");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from [Tabelle]");
while (rs.next())
{
System.out.print(rs.getString(1)+" - ");
System.out.print(rs.getString(2)+" - ");
System.out.print(rs.getInt(3)+" - ");
System.out.print(rs.getString(4)+" - ");
System.out.print(rs.getInt(5)+" - ");
System.out.print(rs.getInt(6)+" - ");
System.out.print(rs.getInt(7)+" - ");
System.out.print(rs.getInt(8)+" - ");
System.out.print(rs.getInt(9)+" - ");
System.out.print(rs.getInt(10)+" - ");
System.out.print(rs.getInt(11)+" - ");
System.out.println(rs.getInt(12));
}
conn.close();
System.out.println("");
System.out.println("Inhalt von MSSQL:");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String typ = "sqlserver";
system = "[System-Name]";
String datenbank = "[DB-Name]";
userId = "[User]";
password = "[Passwort]";
url = "jdbc:jtds:" + typ
+ "://" + system
+ "/" + datenbank
+ ";user=" + userId
+ ";password=" + password;
Connection conn2 = DriverManager.getConnection(url);
System.out.println("Treiber geladen");
Statement stmt2=conn2.createStatement();
ResultSet rs2=stmt2.executeQuery("select * from [Tabelle]");
while (rs2.next())
{
System.out.print(rs2.getString(1)+" - ");
System.out.print(rs2.getString(2)+" - ");
System.out.print(rs2.getInt(3)+" - ");
System.out.print(rs2.getString(4)+" - ");
System.out.print(rs2.getInt(5)+" - ");
System.out.print(rs2.getInt(6)+" - ");
System.out.print(rs2.getInt(7)+" - ");
System.out.print(rs2.getInt(8)+" - ");
System.out.print(rs2.getInt(9)+" - ");
System.out.print(rs2.getInt(10)+" - ");
System.out.print(rs2.getInt(11)+" - ");
System.out.println(rs2.getInt(12));
}
conn2.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
-
ad classpath: jar Dateien müssen bei standalone Anwendungen bis zur Datei angegeben werden, einzelne class files mit dem root Verzeichnis ihrer package Hiewrarchie
ad redbooks: gewöhne dir deren Stil nicht an, das ist Java ala RPG
ad Geschwindigkeit: je nach Alter des Prozessors ist das ziemlich normal und selbst bei neueren Prozessoren ist die AS/400 insbesondere im laden der JVM kein Rennpferd (Speicherverwaltung lässt grüßen!) - deswegen sollte man auf der AS/400 alles als Serverdienst implementieren, dann schnurrt das bei neueren Prozessoren recht ordentlich. Ein paar Hinweise dazu findest du auch auf meiner Webseite in den Java auf AS/400 FAQ.
D*B
-
Zitat von BenderD
ad classpath: jar Dateien müssen bei standalone Anwendungen bis zur Datei angegeben werden, einzelne class files mit dem root Verzeichnis ihrer package Hiewrarchie
Ja das habe ich jetzt auch bemerkt und verstanden.
Zitat von BenderD
ad redbooks: gewöhne dir deren Stil nicht an, das ist Java ala RPG
Ich hab mir nur ein paar Hinweise bzgl. Starten von Programmen und Classpath dort geholt. Weiter vertiefen wollte ich das gar nicht.
Zitat von BenderD
ad Geschwindigkeit: je nach Alter des Prozessors ist das ziemlich normal und selbst bei neueren Prozessoren ist die AS/400 insbesondere im laden der JVM kein Rennpferd (Speicherverwaltung lässt grüßen!) - deswegen sollte man auf der AS/400 alles als Serverdienst implementieren, dann schnurrt das bei neueren Prozessoren recht ordentlich. Ein paar Hinweise dazu findest du auch auf meiner Webseite in den Java auf AS/400 FAQ.
Also unter WRKACTJOB kommt kaum ein Ausschlag, vielleicht 1-2 %. Hauptspeicher stehen 5.000 MB zur Verfügung, wenn ich das richtig gesehen habe. Wenn man sich die Beobachtung der Zeiten so angeguckt scheint ja das Laden der Treiber recht lange zu dauern.
Im FAQ steht ja, dass JIT verwendet werden soll, was ja scheinbar auch Standard ist. Da wir da nichts anderes haben sollte das dann auch wohl bei uns benutzt werden. Wie man etwas als Dienst implementiert auf der iSeries weiß ich zwar nicht, aber vielleicht unser iSeries-Mann. Bislang haben wir das implementiert wie hier vorgeschlagen: http://www.bender-dv.de/Sourcen/QCLSRC.TFRDTA
-
Hallo,
mit Dienst ist hier gemeint, dass man einen Hintergrundjob startet, der eine JVM und alle teuren Objekte (wie auch Treiber) vorab lädt und an einer DataQ oder MessageQ auf Aufträge wartet, die aus AS/400 Programmen in Form von Nachrichten in die AnforderungsQ gestellt werden. Ich plane mit Common für den Herbst einen Workshop zu diesem Thema mit Teilnehmerübungen.
mfg
Dieter Bender
Zitat von Ottersberg
Also unter WRKACTJOB kommt kaum ein Ausschlag, vielleicht 1-2 %. Hauptspeicher stehen 5.000 MB zur Verfügung, wenn ich das richtig gesehen habe. Wenn man sich die Beobachtung der Zeiten so angeguckt scheint ja das Laden der Treiber recht lange zu dauern.
Im FAQ steht ja, dass JIT verwendet werden soll, was ja scheinbar auch Standard ist. Da wir da nichts anderes haben sollte das dann auch wohl bei uns benutzt werden. Wie man etwas als Dienst implementiert auf der iSeries weiß ich zwar nicht, aber vielleicht unser iSeries-Mann. Bislang haben wir das implementiert wie hier vorgeschlagen: http://www.bender-dv.de/Sourcen/QCLSRC.TFRDTA
Similar Threads
-
By PeterKarsten in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 20-08-08, 12:52
-
By linguin in forum NEWSboard Linux
Antworten: 0
Letzter Beitrag: 03-01-07, 08:22
-
By cami in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 27-08-06, 17:31
-
By Christian.Hesse in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 04-08-06, 10:04
-
By binhierneu in forum NEWSboard Java
Antworten: 7
Letzter Beitrag: 19-10-04, 21:02
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks