German [B4J] intern jnet - ftp - dir list für einen VX Works ftp-Server

Hallo miteinander,
hab hier ein Problem mit jnet/ftp. Ich nutzte B4J 9.8 internal Version:1.81.
Ich habe hier mal ein vereinfachtes Testprogramm meines Projekts

ftp list:
private Sub Test
    ftp.Initialize("ftp","10.26.10.115",21,"User","pass")
    ftp.PassiveMode=True
    ftp.TimeoutMs=  60000
    Log (ftp.IsInitialized)
    Dim path As String = "hd0a/BT0148289-30/HOME/programs"
    Wait For (ftp.SendCommand("CWD", "/" & path)) ftp_CommandCompleted (Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
    Log ("ReplyString: " & ReplyString)
    If (Success = True) And (ReplyCode = 250) Then
        Wait For (ftp.List(path))  ftp_ListCompleted(ServerPath As String, Success As Boolean, Folders() As FTPEntry, Files() As FTPEntry)
        If Success = True Then
            Log(Success)
        End If
    End If
    ftp.Close
    
End Sub

An Zeile 10 bekomme ich eine Exception
parser exception:
org.apache.commons.net.ftp.parser.ParserInitializationException: Unknown parser type: VxWorks OS
    at org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory.createFileEntryParser(DefaultFTPFileEntryParserFactory.java:161)
    at org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory.createFileEntryParser(DefaultFTPFileEntryParserFactory.java:94)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2971)
    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2697)
    at anywheresoftware.b4a.net.FTPWrapper$3.run(FTPWrapper.java:288)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

Es scheint keinen parser für das Auflisten von directorys und files für einen VxWorks ftp Server zu geben.
Welche Lösungswege gibt es da?
Mit Windows FTP-Server hatte ich noch kein Problem. Alles funktioniert.


Ähnliches Problem hatte ich hier im Forum gefunden. Ist schon 6 Jahre her gewesen und es kam nie zu einer Lösung.

Bisher habe ich mir etwas selber beholfen und über SendCommand den LIST Befehl usw. abgesetzt. Bin hier soweit gekommen das ich Verzeichnisse und Files zurückbekomme. Leider ohne Jahresdatum (wichtig!). Bisher hänge ich hier fest.

2. Lösung: Ich hab mir mit einer freien JAR-Bibliothek (ftp4j-1.7.2) so einen kleinen Wrapper mit inline-JAVA geschrieben um ein List am ftp-Server auszuführen. Das funktioniert. Leider noch ohne asynchrone Ausführung (da habe ich mich noch nicht damit beschäftigt)

Schön währe es wenn ich den internen ftp-client von B4J nutzen könnte. Vielleicht hat da jemand eine Lösung für mein Problem.
 

DonManfred

Expert
Licensed User
Longtime User
Problem ist vermutlich der unter der ftp-library liegende org.apache.commons.net.ftp.parser der wohl mit dem ftp probleme hat.

Alternative ist wohl dann eine andere ftp-Library zu verwenden. Kenne allerdings keine wo es auch einen wrapper für gäbe.
 
Hallo DonManfred,
so weit war ich auch schon. Hatte mal irgendwo im Internet gelesen das jemand einen VxWorks-parser für org.apache.commons.net.ftp gemacht hat. Das war aber schon gut 7 Jahre her. Wundert mich das dies nicht in die Bibliothek eingeflossen ist. Hab mir auch schon mal die Doc zu org.apache.commons.net.ftp.parser angesehen. Werde da aber nicht ganz schlau daraus.
Habe gestern noch meinen ftp4j-mini Wrapper in mein Projekt implementiert. Es funktioniert erst mal so. Wegen fehlenden async (ich mache viele FTP-Server gleichzeitig in diesem Projekt) natürlich langsamer als jnet in B4J.

Vielleicht hat noch wer anders eine Idee?

Danke aber.
 

DonManfred

Expert
Licensed User
Longtime User
m Internet gelesen das jemand einen VxWorks-parser für org.apache.commons.net.ftp gemacht hat. Das war aber schon gut 7 Jahre her. Wundert mich das dies nicht in die Bibliothek eingeflossen ist.
Ich glaube nicht, das Erel das ganze Internet abgesucht hat als er den Wrapper schrieb.

Ich meine im Kopf zu haben dass es eine ähnliche Frage schonmal gab und er antwortete, dass er alle möglichen ihm bekannten FTPs ausgetestet hat.

Mach ´ne Klasse aus deinem Wrapper und veröffentliche sie; vielleicht noch für andere von Interesse.
 
Falsch verstanden. Ich meinte nicht primär den Wrapper von Erel, sondern org.apache.commons.net. Wenn es dort einen neuen parser gegeben hätte dann währe das bei den vielen Versionen zwischenzeitlich auch im Wrapper von Erel. Erfahrungsgemäß bei meinem mini-Wrapper für ftp4j brauch ich mich nicht um den parser kümmern. Also würde es wahrscheinlich von alleine mit in den Wrapper einbliesen wenn die Biblio. org.apache.commons.net.ftp es hergeben würde. Wobei wir somit wieder am Anfang sind.
Es ist allgemein schwer bei B4J. Es fehlt immer irgend etwas an den Libs wenn man abweichend von der Norm etwas machen möchte. Ist mir schon öfters aufgefallen.

Danke
 
Top