[NEWSboard IBMi Forum]

Thema: V6R1 und FTP

  1. #1
    Registriert seit
    Sep 2008
    Beiträge
    5

    V6R1 und FTP

    Hallo,

    ich habe ein kleines Problem. Unsere Java Anwendung greift auf die i Series via FTP zu und kopiert Daten auf den Server.
    Ein Kunde hat nun auf V6R1 migriert und nun kann sich unsere Anwendung nicht mehr mit dem FTP server der i5 verbinden.
    Wir erhalten immer die Meldung "Error 95 Schlüsselring nicht vorhanden". Unter den FTP Server Atrributen steht im Parameter Secure Socket Layer zulassen ALWSSL "*yes". Laut IBM Hilfe sollte der FTP Server Verbindungen mit und ohne SSL Zertifikat annehmen.

    Hat jemand eine Idee

  2. #2
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Hallo,

    wie greifst Du denn auf den FTP-Server der iSeries zu ? Über SSL ? Falls über SSL, ist dann auch ein Zertifikat im DCM konfiguriert ?

    Gruß,
    KM

  3. #3
    Registriert seit
    Sep 2008
    Beiträge
    5
    Nein, wir greifen nicht via SSL zu.

  4. #4
    Registriert seit
    Sep 2008
    Beiträge
    5
    Nein, wir greifen nicht via SSL zu.
    Wir nehmen die Java Toolbox JTopen V6.1 und die Klasse die die Fehlermeldung zurück gibt ist AS400FTP. Die Fehlermeldung lautet :

    Exception:

    toString:
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1

    --------------------
    getStackTrace:
    java.lang.String.substring(Unknown Source)
    com.ibm.as400.access.ftp.getDataSocket(FTP.java:23 73)
    com.ibm.as400.access.ftp.doAppendOrPut(FTP.java:72 4)
    com.ibm.as400.access.ftp.put(FTP.java:1580)
    com.ibm.as400.access.AS400FTP.put(AS400FTP.java:69 5)
    com.ibm.as400.access.ftp.put(FTP.java:1662)
    com.ibm.as400.access.AS400FTP.put(AS400FTP.java:75 2)
    com.ibm.as400.access.ftp.put(FTP.java:1617)
    com.ibm.as400.access.AS400FTP.put(AS400FTP.java:72 3)
    com.b_a_u.client.app.install_i5.models.Model_Toolb ox_i5_Abstract.putInstallFile(Model_Toolbox_i5_Abs tract.java:293)
    com.b_a_u.client.app.install_i5.Control_Install_i5 _web.putInstallFile(Control_Install_i5_web.java:30 4)
    com.b_a_u.client.app.install_i5.threads.ExecuteDow nload_AED_Daten.run(ExecuteDownload_AED_Daten.java :126)
    java.lang.Thread.run(Unknown Source)

    In der Methode ftp.put kann kein Inputstream gelesen werden.

    Wir haben auch schon die neue JTopen 6.3 getestet, das ergebniss ist leider auch erfolglos, selbe Fehlermeldung.

    Vielen Dank für deine Hilfe KM

    Gruß
    Xattoo

  5. #5
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Aber was hat nun die eine Fehlermeldung mit der anderen zu tun ?
    Könntest Du mal etwas Code posten und schreiben wo welcher Fehler passiert ?

    Versuche doch mal alternativ zum Toolbox-FTP die freie Java FTP library edtFTPj. Damit mache ich meine FTP-Übertragungen.

    Gruß,
    KM

  6. #6
    Registriert seit
    Sep 2008
    Beiträge
    5
    Hallo KM,

    die erste gepostete Fehlermeldung kommt vom FTP Server auf der i5, die zweite Fehlermeldung erzeugt unsere Applikation. Die Meldungen stehen also in Abhängigkeit miteinander.

    Die Frage die ich mir stelle ist warum wird dieser Fehler nur auf einer V6R1 Maschine erzeugt . Bei unseren Kunden sind verschieden Release V5R1 - V5R4 im Einsatz die alle wunderbar funktionieren.

    Es muss sich also etwas beim Release Stand V6R1 geändert haben.

    Sorry vielleicht hab ich die Problemschilderung falsch dargestellt.

    Hier kurz eine Erklärung der Java Anwendung.

    Java Anwendung die auf einem Client läuft, lädt sich aus dem Internet eine gezipte Savfile herunter.
    Diese wird am Client Rechner ausgepackt (unzip). Danach wird via FTP die Savefile auf den Host übertragen. Die Savefile wird auf dem Host mit dem Befehl rstlib ausgepackt und danach über ein CL Programm weiterverarbeitet.

    Bei der übertragung der SaveFile erhalten wir nun auf der Client Seite eine Java Exception (die oben gepostete) zusätzlich haben wir uns den FTP Server Job angeschaut und hier erhalten wir auch eine Fehlermeldung (w.o gepostet).

    Es muss sich also beim Release V6R1 gegenüber V5R4 oder früher etwas elementares geändert haben.

    @KM Funktioniert deine Anwendung auch mit Release V6R1 ?

  7. #7
    Registriert seit
    Sep 2008
    Beiträge
    5
    Hier der Code


    Methode connectFTP_Server


    Public boolean connectFTP_Server() {
    boolean boolConnectFTP_Server = false;
    String strCurrentMethod = "connectFTP_Server()";
    sbErrorDescription = new StringBuffer();
    if (as400 == null) {
    return false;
    }
    this.ftpClient = new AS400FTP(getAs400());
    this.ftpClient.addFTPListener(new MyFTPListener());
    try {
    this.ftpClient.setPort(System_i5_config_Static
    .getSystem_i5_FTP_Port());
    appendSessionLogEntry_fromFTPServer(this.ftpClient .getLastMessage());
    sbErrorDescription.append(this.ftpClient.getLastMe ssage());
    } catch (PropertyVetoException e1) {
    Exc.excInfo_Sun.getInfo(e1, CLASSNAME, strCurrentMethod,
    sbErrorDescription);
    return false;
    }
    try {
    boolConnectFTP_Server = this.ftpClient.connect();
    appendSessionLogEntry_fromFTPServer(this.ftpClient .getLastMessage());
    } catch (UnknownHostException e) {
    sbErrorDescription.append("Der Hostname: "
    + getAs400().getSystemName());
    sbErrorDescription.append(SEP + "ist ungültig");
    Exc.excInfo_Sun.getInfo(e, CLASSNAME, strCurrentMethod,
    sbErrorDescription);
    return false;

    Klasse MyFTPListener


    class MyFTPListener extends java.lang.Object implements FTPListener {
    String strCurrentMethod = "connected(FTPEvent fe)";

    public void connected(FTPEvent fe) {
    try {
    appendSessionLogEntry_fromFTPServer("Testanfrage an FTP-Server: "
    + ftpClient.issueCommand("NOOP"));
    appendSessionLogEntry_fromFTPServer(ftpClient
    .issueCommand("SYSTEM"));
    ftpClient.setDataTransferType(AS400FTP.BINARY);
    appendSessionLogEntry_fromFTPServer(ftpClient.getL astMessage());
    ftpClient.issueCommand("SITE NAMEFMT 1");
    appendSessionLogEntry_fromInstall_i5("---------------------------------------");

    } catch (IOException ioe) {
    Exc.excInfo_Sun.getInfo(ioe, CLASSNAME, strCurrentMethod, null);
    return;
    }
    }

    public void disconnected(FTPEvent fe) {
    appendSessionLogEntry_fromFTPServer(ftpClient.getL astMessage());
    }

    public void listed(FTPEvent fe) {
    }

    public void put(FTPEvent fe) {
    appendSessionLogEntry_fromFTPServer(ftpClient.getL astMessage());
    }

    public void retrieved(FTPEvent fe) {
    }


    Methode puInstallFile:


    public boolean putInstallFile(String strSourceFileName) {
    boolean boolPut = false;
    String strCurrentMethod = "putInstallFile()";
    sbErrorDescription = new StringBuffer();
    if (this.ftpClient == null || strSourceFileName == null) {
    return false;
    }
    if (quitFTP_Server() == false){
    return false;
    }
    if (connectFTP_Server() == false) {
    return false;
    }
    strSourceFileName = Transform_StringValue
    .setStringVariable(strSourceFileName);
    QSYSObjectPathName targetPath = null;
    try {
    targetPath = build_INSTALL_SAVF_TargetPath(strSourceFileName);
    if (targetPath == null) {
    return false;
    }
    } catch (ExtendedIllegalArgumentException exc) {
    Exc.excInfo_IBM
    .getInfo(exc, getClassInfo(), strCurrentMethod, null);
    return false;
    }
    //
    String strTargetFileName = targetPath.getPath();
    try {
    appendSessionLogEntry_fromInstall_i5(SEP);
    String strNewInst = "=================================";
    appendSessionLogEntry_fromInstall_i5(strNewInst);
    String strLogEnty = "Start Datenübertragung für Datei:";
    appendSessionLogEntry_fromInstall_i5(strLogEnty);
    appendSessionLogEntry_fromInstall_i5(strSourceFile Name);

    Hier fällt die Anwendung auf die Nase

    boolPut = this.ftpClient.put(strSourceFileName, strTargetFileName);

    appendSessionLogEntry_fromFTPServer(ftpClient.getL astMessage());
    sbErrorDescription.append(strLogEnty + " fehlgeschlagen:");
    sbErrorDescription.append(this.ftpClient.getLastMe ssage());
    } catch (IOException e)

Similar Threads

  1. Daten perr FTP ins IFS
    By malzusrex in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-12-06, 13:38
  2. Ftp put hängt sich auf
    By TARASIK in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 21-11-06, 16:18
  3. FTP
    By KM in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-08-06, 13:50
  4. Savf File per FTP
    By wuwu in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 18-08-06, 08:09
  5. FTP von V5R3M0 nach V5R4M0
    By Frank.Sobanek in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 22-06-06, 20:22

Berechtigungen

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