hallo leute
ich habe einen umfangreichen serverprozess, der in java geschrieben ist. dieser serverprocess startet etliche hintergrundthreads. zusätzlich können sich mehrere clients über rmi an diesen server verbinden und arbeiten.
meine frage ist nun: wie kann ich SÄMTLICHE threads, die am server laufen, anzeigen lassen - also auch die rmi-threads. mit den normalen mitteln (thread.enumerate) sehe ich nur die threads der aktuellen thread-group. die rmi-threads scheinen aber in einer anderen thread-group zu laufen.
ich bin mir sicher, es gibt eine extrem primitive lösung zu meinem problem - ich stehe aber gerade auf der leitung und brauche daher ein paar helfende hände…
erwin
- ich stehe aber gerade auf der leitung und
brauche daher ein paar helfende hände…
erwin
Hallo Erwin,
dort wo die Threads angestoßen und beendet werden sollte es möglich sein diesem über System.out anzuzeigen.
Thread myThread = new Thread(parameter…);
System.out.println(myThread.toString();
Du kannst natürlich auch die Ausgabe in ein LogFile lenken…
MfG.
Marc
Trifft leider nicht den Kern meines Problems.
Kurz zur näheren Erklärung: Wir haben ein Workflow-System zugekauft, das in Java geschrieben ist. Dieses System verwendet 3-Tier-Architektur: Client (in Java) verbindet sich über RMI an einen Server (in Java), dieser verbindet sich über JDBC an eine Oracle-Datenbank.
Soweit so gut. Auf den Source-Code des Servers habe ich keinen Zugriff. Das System ist aber so parametrisierbar, dass ich eigene Klassen integrieren kann (z.b. über ein Servlet-Interface). Eines meiner Servlets soll nun alle Aktivitäten des Servers anzeigen, unter anderen auch eine Liste aller gestarteten Threads.
Nach meinem Verständniss müsse bei einem Verbindungsaufbau über RMI am Server ein eigener Thread gestartet werden, der diese Verbindung behandelt. Es müsste also pro aktiven User einen eigenen Thread geben. Ich sehe diese Threads aber in der aktuellen Thread-Gruppe nicht.
Die Frage ist nun: komme ich überhaupt an die Threads, die durch RMI-Calls gestartet wurden, ran? Ev. muss ich ja ein eigenes Objekt in der RMI-Registry registrieren und dann einen remote-call darauf ausführen. Möglicherweise bin ich dann in der richtigen Thread-Group.
Erwin