Hallo,

fangen wir mal mit dem offenen Problem an:

Zitat Zitat von KM
Problem 4: Wenn ich den Listener in das Verzeichnis "classes" stelle und in der web.xml dann nur den Klassennamen (MeinListener) angebe im <listener-class> Tag, dann funktioniert das. Wenn ich aber die Klasse ins Verzeichnis "classes\listener" stelle und in der web.xml die Klasse mit "listener.MeinListener" anspreche, dann erhalte ich einen Fehler beim Starten (...ClassNotFound... wrong name...). Was muß ich ändern, damit das auch funktioniert. Ich wollte eigentlich nicht alle Klassen ins Verzeichnis classes stellen.
listener.MeinListener ist für java eine Klasse MeinListener im package listener und wird im classpath in einem Verzeichnis listener gesucht, du hast, soweit ich das verstehe eine Klasse MeinListener ohne package Angabe im Verzeichnis listener anzubieten, das ist was völlig anderes.
In AS400 Denke formuliert: jede Java Klasse weiß selber in welche Bibliothek sie gehört.

Zitat Zitat von KM
Oje, da hab ich ja eine ganz schöne Diskussion angezettelt.
Jetzt hab ich das Ganze halbwegs am Laufen, wird schon wieder davon abgeraten. Ich werde das jetzt aber trotzdem mit dem Tomcat durchführen. Die meisten Probleme habe ich beseitigt. Und die letzten Kleinigkeiten werde ich auch noch finden.
Das bedeutet nur, dass die Frage Substanz hat. Ich denke dass du mit deiner Lösung so oder so um Längen besser bist, als die meisten RPG Java Verknotungen mit zig aktiven JVMs. Nix ist optimal, man sollte nie aufhören darüber nachzudenken wo noch Verbesserungspotential sitzt.

Zitat Zitat von KM
Da das mein erstes Servlet und meine erste Thread-Erzeugung war, hätte ich zu den Threads noch eine Frage. Ist es normal, dass der Thread noch weiterläuft, auch wenn das übergeordnete Servlet beendet wurde ? Mir ist das aufgefallen als ich das Servlet beendet hatte, dass dann die Verarbeitung der DTAQ (die in diesem Thread durchgeführt wird) immer noch stattgefunden hat. Erst durch Beschicken der DTAQ wurde offenbar der Thread beendet. Dann kam auch irgendein "Illegal..." Fehler. Ich werde nun also immer erst den Thread über die DTAQ beenden, bevor ich das Servlet beende.
Ein Thread ist ein Hundsnormales Objekt in Java und solange ihn jemand kennt (eine Referenz auf ihn besitzt) bleibt er am Leben bis der Sensenmann (, ein Herr namens GarbageCollector) ihn holt, soweit er mit seiner Arbeit fertig ist (sprich sich keine Methode in Ausführung befindet).
Du hast wohl in deiner run Methode (oder von dort aufgerufen) eine Methode, die nicht fertig wird (Schleife mit DataQ horchen, was machen und von vorne). Da kam auch die Sache mit der Pipe her... dein system.exit() kippt die JVM raus und die merkt beim beenden, dass da noch was lief.
Das beenden über DataQ kann man auch aus dem shutdown im Java erledigen, da müsstest du aber etwas genauer sagen, wie du das vorhast.

Zitat Zitat von KM
Die Sache mit dem REXEC gefällt mir hier nicht so. Denn was passiert, wenn der Windows-Server mal neu gestartet wird ? Dann müsste ich den Dienst ja wieder anstarten. Und woher weiß die iSeries das dann ? Außerdem würde doch da für jeden Dienst eine JVM gestartet, oder nicht ?

Ich finde die Sache mit dem Tomcat eigentlich gar nicht so schlecht. Hab dabei echt viel neues gelernt.

Vielen Dank nochmal !

Gruß,
KM
Naja, ich kenne deine AS400 seitige Architektur nicht. Bei meiner Variante gibt es da ein Serviceprogramm, beim ersten Aufruf in der Initialisierung wird ein connect erzeugt (Response DataQ erstellen) da könnte man auch checken ob der Server lebt (indem man ping in die requestQ stellt und der Server mit hallo in der responseQ antwortet) und widrigenfalls starten, ein TimeOut könnte dann auch einen automatischen Wiederanlauf auslösen.

Du bist immer noch bei mehreren Diensten (mit DataQ) bei mir wäre das immer nur einer, der alle Anforderungen kann, warum soll man das duplizieren, (was anderes wäre das nicht). Wenn du denn unbedingt mehrere DataQs abgehorcht haben willst, dann fährst du halt im Start deine 76 Listener hoch, die warten ob jemand was will.

Die Sache mit dem Start beim Restart der Windows Büchse, einen Tod stirbt man ohnehin, wenn der Tomcat abgekackt ist, dann merkt das die AS400 auch nur daran, dass das im wahrsten Sinne des Wortes ewig dauert...

mfg

Dieter Bender