[NEWSboard IBMi Forum]
Seite 1 von 5 1 2 ... Letzte
  1. #1
    Registriert seit
    Apr 2008
    Beiträge
    83

    Java auf iSeries

    Moin zusammen.

    Ich bin ein Java-Entwickler. Im Moment versuchen wir ein Java-Programm auf der iSeries (V5R3) zum Laufen zu bringen. Das das geht weiß ich. Nur leider nicht wie das geht. Bei uns hat keiner Erfahrung mit Java auf der iSeries. Zum Programmieren hab ich bislang eclipse benutzt und hab jetzt ganz frisch den WDSC 7.0 installiert.

    Gibt es da irgendwelche Vorschläge eurerseits, wo man Starthilfen finden kann? Irgendwelche Bücher, Artikel oder so was?

    Bislang hab ich erstmal ein ganz einfaches "Hello World"-Programm geschrieben. Also nur eine Zeile mit Ausgabe. Habe dann im I-Net gefunden, dass es den Befehl RUNJVA gibt, das ganze in eine JAR-Datei umgewandelt, auf die iSeries gepackt und gestartet. War leider nichts. Wäre ja auch zu schön.

    Hab dann mal weiter gelesen. Habe dann herausgefunden, dass IBM schon ein eigenes Programm für "Hello World" gleich mitgeliefert hat. Der Befehl "java Hello" hat dann auch gleich funktioniert. In dem Beitrag stand auch wie man das selber programmiert auf der iSeries. Ich hab also meinen bisherigen Quellcode rüberkopiert und wollte ihn kompilieren. Dazu QSH eingegeben, mit cd in den Ordner Java (von mir angelegt) gewechselt und "javac Hello.java" ausgeführt. Das wird ohne Fehlermeldung beendet, aber es wird keine class-Datei erstellt.

    Der Classpath sieht momentan so aus:
    ".:/Java:/QIBM/ProdData/Java400/jdk14/bin"
    Da bin ich mir nicht sicher ob der dritte Teil überhaupt sein muss.

    Kann mir jemand weiterhelfen?

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    an der Qshell verhält sich die as/400 wie eine Unix Büchse. Da gibt es also java, javac usw.
    Nach deinem javac sollte es also die class geben, das Zauberwort zum nachsehen heißt ls
    pwd zeigt dir das aktuelle directory

    Es gibt auch eine JDK Doku für die AS/400, aber für die gilt das, was auch für alle Redbooks und die meisten AS/400 Java Ressourcen gilt: grauenhafter Java Stil!!!

    mfg

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Apr 2008
    Beiträge
    83
    Also wir haben jetzt folgendes probiert.

    • QSH
    • cd /Java
    • ls (zeigt nur die Datei Hello.java)
    • javac Hello.java (abgeschlossen ohne Fehlermeldung mit einem $)
    • ls (immer noch nur eine Datei)

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    lass die Möhre doch mal erzählen, was sie so tut
    javac -verbose Hello.java

    auch java -version wäre interessant

    D*B


    Zitat Zitat von Ottersberg Beitrag anzeigen
    Also wir haben jetzt folgendes probiert.

    • QSH
    • cd /Java
    • ls (zeigt nur die Datei Hello.java)
    • javac Hello.java (abgeschlossen ohne Fehlermeldung mit einem $)
    • ls (immer noch nur eine Datei)
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ad 1: das würde ich mir nicht antun
    ad 2: runjava ist ein kastrierter Aufruf, the real stuff is Qshell
    ad 3: entwickeln und kompilieren am besten auf PC und dann ganz normal deployen und starten, wie auf (fast) jeder anderen Büchse auch.
    ad 4: der tut nicht nötig, macht aber auch nix kaputt



    Zitat Zitat von Ottersberg Beitrag anzeigen
    Moin zusammen.

    hab jetzt ganz frisch den WDSC 7.0 installiert.

    dann im I-Net gefunden, dass es den Befehl RUNJVA gibt, das ganze in eine JAR-Datei umgewandelt, auf die iSeries gepackt und gestartet. War leider nichts. Wäre ja auch zu schön.

    Quellcode rüberkopiert und wollte ihn kompilieren. Dazu QSH eingegeben, mit cd in den Ordner Java (von mir angelegt) gewechselt und "javac Hello.java" ausgeführt. Das wird ohne Fehlermeldung beendet, aber es wird keine class-Datei erstellt.

    Der Classpath sieht momentan so aus:
    ".:/Java:/QIBM/ProdData/Java400/jdk14/bin"
    Da bin ich mir nicht sicher ob der dritte Teil überhaupt sein muss.

    Kann mir jemand weiterhelfen?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von BenderD Beitrag anzeigen
    ad 1: das würde ich mir nicht antun
    ad 2: runjava ist ein kastrierter Aufruf, the real stuff is Qshell
    ad 3: entwickeln und kompilieren am besten auf PC und dann ganz normal deployen und starten, wie auf (fast) jeder anderen Büchse auch.
    ad 4: der tut nicht nötig, macht aber auch nix kaputt
    alles klar. Weiß ich erstmal bescheid.

    Ergebnisse:

    javac -verbose:
    parsing started
    parsing completed

    immer noch keine Class-Datei.

    java -version:
    1.4.2

    java -classpath:
    nichts
    finde ich etwas ungewöhnlich, da ja eigentlich eingetragen.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    das ist auf jeder Büchse so, villeicht solltest du erstmal auf einer üblichen Java Büchse etwas sattelfester werden...

    D*B

    Zitat Zitat von Ottersberg Beitrag anzeigen
    java -classpath:
    nichts
    finde ich etwas ungewöhnlich, da ja eigentlich eingetragen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Erstelle dein Java-Archiv / Klassen doch ganz einfach mit deiner Eclipse-Umgebung, achte dort bei der Erstellung auf die 1.4-Version (Default ist ggf. 1.5).

    Kopiere deine .jar oder deine Verzeichnisstruktur ins IFS der AS/400 und starte deine Javaprozedur wie üblich mit

    qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/MyPath" MyMainClass')

    Bei mir funktioniert das so.
    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

  9. #9
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von BenderD Beitrag anzeigen
    das ist auf jeder Büchse so, villeicht solltest du erstmal auf einer üblichen Java Büchse etwas sattelfester werden...

    D*B
    Was classpath und die Standard Java-Programme angeht bin ich leider in der Tat nicht sehr bewandert. In den ganzen Kursen die ich belegt habe kam das nie zur Sprache. Nur java und javac sind mal angesprochen worden. Hab ich damals auch schon bemängelt. Aber eclipse macht das ja quasi automatisch, so dass man keinen Grund sah das mit aufzunehmen. Hauptsache das Programm läuft in eclipse . Das viele Java Probleme mit classpath zu tun haben (sieht man ja auch hier im Forum) war uninteressant. Wenn du mir einen guten Tipp geben kannst, wo das in gut aufbereiteter Form alles erklärt wird dann nehme ich den gerne. Bislang habe ich mir immer alles zusammen gesucht.

    Die Programme die ich bislang geschrieben haben waren einfache grafische Oberflächen, sowie ein Programm, dass Daten aus Textdateien ausliest und in die iSeries schreibt. Aber das Programm läuft auf einer Windows-Maschine. Ich würde ja auch einen anderen Java-Programmierer im Haus fragen, nur leider gibt es keinen anderen. Ich muss das also selbst hinbekommen.

    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.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Erstelle dein Java-Archiv / Klassen doch ganz einfach mit deiner Eclipse-Umgebung, achte dort bei der Erstellung auf die 1.4-Version (Default ist ggf. 1.5).

    Kopiere deine .jar oder deine Verzeichnisstruktur ins IFS der AS/400 und starte deine Javaprozedur wie üblich mit

    qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/MyPath" MyMainClass')
    Werd ich gleich mal ausprobieren und berichten.

  10. #10
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Fuerchau Beitrag anzeigen
    qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/MyPath" MyMainClass')
    habe jetzt folgendes ausprobiert:

    Code:
    qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java" hello.jar')
    Klasse nicht gefunden

    Zum Ausführen eines Jar-Files brauche ich ja den Zusatz -jar.
    Wir sind dann direkt in die QShell gewechselt und haben dort die Befehle direkt eingegeben.

    Code:
    java -jar -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java" hello.jar
    Programm wurde mit einem $ beendet, aber keine Ausgabe.

    Habe dann lokal bei mir das mal ausprobiert und unter java -? gesehen, dass -jar hinter die anderen Argumente kommt, also:

    Code:
    java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java" -jar hello.jar
    Programm wurde mit einem $ beendet, aber keine Ausgabe.

    Bin dann per cd in den Ordner Java gewechselt und hab folgendes ausprobiert:
    Code:
    java -classpath "/QIBM/ProdData/Java400/jdk14/bin" -jar hello.jar
    Programm wurde ausgeführt und Ausgabe erschien.

    Bin dann wieder per cd nach oben gewechselt und hab folgendes probiert:
    Code:
    java -classpath "/QIBM/ProdData/Java400/jdk14/bin" -jar /Java/hello.jar
    Programm wurde ausgeführt und Ausgabe erschien.

    Habe dann mal den classpath komplett weggelassen, also:
    Code:
    java -jar /Java/hello.jar
    Programm wurde ausgeführt und Ausgabe erschien.

    Ein
    Code:
    qsh cmd('java -jar /Java/test.jar')
    brachte dann auch außerhalb der QShell den gewünschten Erfolg.

    Der Ordner "Java" muss aber immer mit angegeben werden. Ohne den geht es nicht.

  11. #11
    Registriert seit
    Apr 2008
    Beiträge
    83
    Ich habe ein erstes Programm für ein einfaches Lesen und Ausgeben von Daten geschrieben. Es wird je eine Tabelle der iSeries und des MSSQL-Servers gelesen und auf der Konsole ausgegeben. Lokal bei mir auf dem Rechner funktioniert das. Auf der iSeries kommt keine Verbindung zum MSSQL-Server zustande. Es kommt die Meldung:

    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.

    Im ConnectionString habe ich extra ein "encrypt=false" hinzugefügt, was eigentlich bewerkstelligen soll, dass kein SSL erforderlich ist. Weiß da jemand Rat, da es sich ja scheinbar um eine spezifisches Sache der iSeries handelt.


    Weiterhin scheint das mit dem Classpath irgendwie nicht zu klappen. Egal ob ich die Systemvariable unter WRKENVVAR setze oder -classpath beim Aufruf übergebe, es wird scheinbar immer ignoriert. Die Datenbankverbindungen klappten erst, als ich die entsprechenden jar-Files in den Ordner QIBM\ProdData\OS400\Java400\jdk\lib\ext kopiert habe. Dort wird ja halt standardmäßig nach Dateien gesucht.


    Außerdem wollte ich Fragen ob der Geschwindigkeitsunterschied zwischen iSeries und lokal stimmt. Lokal brauche mein Programm etwa 4 Sek. Auf der iSeries etwa 60 Sekunden für das Auslesen der iSeries-Daten und dann etwa nochmal 60 Sekunden bis zum Programmabbruch beim Versuch die Verbindung zum MSSQL-Server herzustellen. Oder liegt das daran, dass er die jar-Dateien suchen muss?

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

Similar Threads

  1. PDF auf iSeries
    By PeterKarsten in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 20-08-08, 12:52
  2. NFS von Linux auf ISeries
    By linguin in forum NEWSboard Linux
    Antworten: 0
    Letzter Beitrag: 03-01-07, 08:22
  3. Antworten: 3
    Letzter Beitrag: 27-08-06, 17:31
  4. Java, JDBC, iSeries und Tschechische/Russische/Chinesische Zeichen
    By Christian.Hesse in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-08-06, 10:04
  5. Java auf der iSeries
    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
  •