[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    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

    "Hello" wenn dies deine Main-Klasse ist.

    Desgleichen gehören auch die Treiberkomponenten für den JDBC-Treiber in den classpath.

    Ich mache z.B. eine Verbindung zu einer Oracle-DB mit:

    "...:/Home/Fuerchau/Java/Driver/classes12.zip"

    somit findet er den Treiber in der classes1.zip (auch hier wieder wie ein Verzeichnis).

    Was die SSL-Verschlüsselung angeht, so bestimmt ggf. der SQL-Server, dass SSL nötig ist.
    Hierfür sind bestimmt doch einige Konfigdateien in deiner Eclipse-Umgebung vorhanden, die du auch ggf. in dein Home-Verzeichnis auf der AS/400 kopieren musst.

    Ohne SSL wird mit Sicherheit ein anderer Port für die Verbindung mit dem SQL-Server einzustellen sein.

    Was die Geschwindigkeit angeht, so gibt es viele Faktoren.
    Ich kann mit Java und SQL aus der AS/400 relativ schnell Daten lesen, das Schreiben nach Oracle dauert dafür etwas länger, so dass ich ca. 1000 Sätze pro Minute übertragen kann.
    Hier könnte das Netz, die Leitung oder auch Oracle Schuld haben.

    Die 60 Sekunden bis zum Abbruch liegen ggf. am ConnectionTimeout.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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 Zitat von BenderD Beitrag anzeigen
    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();
    		}
    	}
    }

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Ottersberg Beitrag anzeigen
    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.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Apr 2008
    Beiträge
    83
    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

Similar Threads

  1. PDF auf iSeries
    By PeterKarsten in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 20-08-08, 13:52
  2. NFS von Linux auf ISeries
    By linguin in forum NEWSboard Linux
    Antworten: 0
    Letzter Beitrag: 03-01-07, 09:22
  3. Antworten: 3
    Letzter Beitrag: 27-08-06, 18:31
  4. Java, JDBC, iSeries und Tschechische/Russische/Chinesische Zeichen
    By Christian.Hesse in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-08-06, 11:04
  5. Java auf der iSeries
    By binhierneu in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 19-10-04, 22:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •