Applet Alle Threads beim schließen des Applets beenden

A

a987348239a7

Gast
Ich habe ein Applet, in dem ich einen neuen Thread starte. Wird das Fenster geschlossen, bleibt der Thread offen (Das sehe ich daran, dass er Daten an einen Server sendet). Ich habe den Thread bereits zu Daemon gemacht und in der destroy-Methode des Applets ein System.exit(0) ausgeführt.
 
A

appletDev

Gast
Aber so wirklich auskennen tust du dich mit Applets nicht oder ?

Ein Applet hat einen fest definierten Lebenszyklus :

Laden des Applets
Konstruktor callen
init() callen
start() callen

Und dann läuft das Applet erstmal.
Je nach implementierung gibt es dann verschiedene Verwendungszwecke für stop() : entweder wird es gecallt wenn das Applet aus dem sichtbaren Bereich rausläuft oder der Tab inaktiv wird.

destroy() wird grundsätzlich erst gecallt wenn die Seite wirklich geschlossen wird. Also Tab schließen oder andere Seite aufrufen. Und erst damit ist dann das Leben des Applets vorbei.

Dessweiteren ist System.exit() in einem Applet NICHT erlaubt (zumindest nicht ohne Signatur). Also müsste es eigentlich schon beim Laden eine Fehlermeldung geben das diese Aktion unzulässig ist. Und diese verhindert dann in der Regel das Laden des Applets komplett. Ausnahme : Signatur

Und auch ist die Frage : WELCHES Fenster ? Der Browser-Tab oder ein eigenes J/Frame ?

Und wenn auf deinem Server irgendwas weiter läuft hast du bei der Implementierung geschlampt und räumst die Resourcen nicht sauber auf.
 
0

09435809238

Gast
Aber so wirklich auskennen tust du dich mit Applets nicht oder ?

Ein Applet hat einen fest definierten Lebenszyklus :

Laden des Applets
Konstruktor callen
init() callen
start() callen

Und dann läuft das Applet erstmal.
Je nach implementierung gibt es dann verschiedene Verwendungszwecke für stop() : entweder wird es gecallt wenn das Applet aus dem sichtbaren Bereich rausläuft oder der Tab inaktiv wird.

destroy() wird grundsätzlich erst gecallt wenn die Seite wirklich geschlossen wird. Also Tab schließen oder andere Seite aufrufen. Und erst damit ist dann das Leben des Applets vorbei.

Dessweiteren ist System.exit() in einem Applet NICHT erlaubt (zumindest nicht ohne Signatur). Also müsste es eigentlich schon beim Laden eine Fehlermeldung geben das diese Aktion unzulässig ist. Und diese verhindert dann in der Regel das Laden des Applets komplett. Ausnahme : Signatur

Und auch ist die Frage : WELCHES Fenster ? Der Browser-Tab oder ein eigenes J/Frame ?

Und wenn auf deinem Server irgendwas weiter läuft hast du bei der Implementierung geschlampt und räumst die Resourcen nicht sauber auf.

Was soll ich denn machen, damit das Applet vollständig beendet wird, wenn das Tab geschlossen wird. Auf meinem Server läuft nicht "Irgendwas weiter", sondern das Applet schickt auch nach dem Schließen des Tabs Anfragen.
 
2

24592845790

Gast
Ein weiteres Problem ist, das ein Applet, wenn ich die Seite neu lade, ein zweites Mal geöffnet wird, sodass es zweimal gleichzeitig ausgeführt wird!
 

haui95

Bekanntes Mitglied
Wenn du System.exit(0) in einem Applet verwendest, wird dir deine Anwendung höchstwahrscheinlich eine Runtime Security Exception werfen, da, wie schon erwähnt, ein Applet so ohne Weiteres nicht beendet werden kann, auch nicht mit System.exit(0). Normalerweise wird ein Applet nur dann
beendet, wenn du die Seite wechselt oder den Browser schließt. Nachdem du nun den Browser geschlossen hast, sollten nun alle Prozesse beendet werden, also auch die JVM.
Du sagst ja, dass deine Threads bzw. Streams, nach dem Schließen des Browsers im Hintegrund weiterlaufen. Das kann zum einen daran liegen, dass du die offenen Threads nicht gestoppt hast.
Ich würde immer so etwas machen wenn du den Thread beenden möchtest.

Java:
Thread td = new Thread();

td.interrupt();        // td.stop() ist deprecated und sollte nicht mehr verwendet werden.
td = null;

Es kann zum anderen aber auch daran liegen, dass du Socket und Streams nicht in der destroy()-Methode des Applets geschlossen hast.

Java:
IrgendEinStream stream1 = IrgendEinStream();
IrgendEinStream stream2 = IrgendEinStream();
Socket socket = new Socket();

public void destroy() {
    stream1.close();
    stream2.close();
    socket.close();
}

Ich hoffe, dass ich dir weiterhelfen konnte, aber ich würde trotzdem noch einmal über den Quellcode schauen, ob du nicht doch irgendwo etwas vergessen hast zu schließen oder zu beenden und ob du alle vordefinierten Thread und Applet Methoden richtig überschrieben hast.

MfG

Hauke
 
8

8439299238

Gast
Ich habe jetzt mal in die Javakonsole gesehen und bekomme dort oft folgende Exception:

plugin2manager.parentwindowDispose
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at sun.plugin2.message.Queue.waitForMessage(Unknown Source)
at sun.plugin2.message.Pipe$2.run(Unknown Source)
at com.sun.deploy.util.Waiter$1.wait(Unknown Source)
at com.sun.deploy.util.Waiter.runAndWait(Unknown Source)
at sun.plugin2.message.Pipe.receive(Unknown Source)
at sun.plugin2.main.client.MessagePassingExecutionContext.doCookieOp(Unknown Source)
at sun.plugin2.main.client.MessagePassingExecutionContext.setCookie(Unknown Source)
at sun.plugin2.main.client.PluginCookieSelector.setCookieInBrowser(Unknown Source)
at com.sun.deploy.net.cookie.DeployCookieSelector.setCookieInfo(Unknown Source)
at com.sun.deploy.net.cookie.DeployCookieSelector.put(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Snakes$1.run(Snakes.java:158)

Wenn ich die Exception jedoch in Zeile 158 mit einem Tryblock umgebe und die InterruptedException abfangen will, sagt Eclipse, diese werde nie geworfen.
 
2

2450204950392

Gast
Der ganze Code wäre jetzt etwas lang. In Zeile 158 steht:
rd = new BufferedReader(new InputStreamReader(inCon.getInputStream()));

Wie aus der Fehlermeldung ersichtlich wird dort wait() aufgerufen und wenn der Thread zu diesem Zeitpunkt unterbrochen wird eine Exception geworfen (die ich aber aus irgendeinem Grund nicht abfangen darf...).
 

faetzminator

Gesperrter Benutzer
Wieso willst du die Exception abfangen? Dass sie überhaupt geworfen wird, zeugt doch davon, dass sich dein Applet tatsächlich zu beenden scheint.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
O Warten bis alle gestarteten Threads beendet sind? Allgemeine Java-Themen 6
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
_user_q Alle Kombinationen von "0000" bis "FFFF" kompakt schrieben Allgemeine Java-Themen 13
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
L Farbverlauf RGB alle Farben Allgemeine Java-Themen 28
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
S Alle Dateinamen ermitteln Allgemeine Java-Themen 22
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
MaxG. Best Practice Alle Kombinationen berechnen Allgemeine Java-Themen 3
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
I Alle logs von Logger bekommen Allgemeine Java-Themen 3
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
L Alle möglichen Additionen (Rekursiv) Allgemeine Java-Themen 3
KaffeeFan Methoden replace alle Buchstaben Allgemeine Java-Themen 3
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Seikuassi Alle Escape-Sequenzen in einem String ersetzen Allgemeine Java-Themen 4
F Java Spintax: Alle Kombinationen Erzeugen Allgemeine Java-Themen 2
Sogomn Klassen Alle in eine Klasse Allgemeine Java-Themen 11
P Methoden Alle Kombinationen aus 2 Karten berechnen Allgemeine Java-Themen 2
B Threads Barrier mit wait()/notify() aber nicht alle Prozesse terminieren Allgemeine Java-Themen 2
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
C SwingWorker.cancle(true) tötet alle Worker Allgemeine Java-Themen 3
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
T Alle Instancen einer Klasse auflisten Allgemeine Java-Themen 13
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
brunothg Alle Kombiationen von n Ziffern Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
B Variablen Alle RenderingHints.Keys (KEY_*) in Array + alle RenderingHints.Keys (VALUE_*) in Object[] Allgemeine Java-Themen 8
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
E Logger loggt nicht alle Level Allgemeine Java-Themen 2
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
K String: alle X Zeichen Zeilenumbruch Allgemeine Java-Themen 3
F Alle Exceptions abfangen Allgemeine Java-Themen 4
nrg JS als ScriptEngine - alle Punkte ersetzen Allgemeine Java-Themen 4
A Bildschirmauflösung geändert - alle Bildschirminhalte verschoben - was tun? Allgemeine Java-Themen 7
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
S Warum packt er nicht alle Dateien? Allgemeine Java-Themen 13
J Alle Tage eines Jahres Allgemeine Java-Themen 2
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
Spot84 alle kombinationen einer string arraylist Allgemeine Java-Themen 2
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
J Konstrukt um alle Paare und Tripel einer Punkte-Menge bilden Allgemeine Java-Themen 12
B Alle möglichen Buchstabenkombinationen in einem String Allgemeine Java-Themen 7
P alle zusammanhaengenden teilgraphen Allgemeine Java-Themen 7
A alle nicht-dplikate finden Allgemeine Java-Themen 14
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3
M alle möglichen Zahlenkombinationen Allgemeine Java-Themen 5
B in welchem verzeichnis liegen alle installierten klassen? Allgemeine Java-Themen 6
hdi Für alle fleissigen Helfer! Allgemeine Java-Themen 15
N Alle Fehler ausgeben? Allgemeine Java-Themen 4
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
O Auf alle Events reagieren Allgemeine Java-Themen 3
B J-Unit Tests. Alle Tests eines Package einsammen. Allgemeine Java-Themen 4
U alle Dateien eines Ordners innerhalb einer JAR auflisten Allgemeine Java-Themen 6
S toString() für alle Member einer Klasse. Allgemeine Java-Themen 6
G Alle möglichen Konfigurationen eines Baumes Allgemeine Java-Themen 4
C Alle Möglichen Substrings der Länge k aus String extrahieren Allgemeine Java-Themen 9
C Alle Bilder eines binären Arrays ausgeben Allgemeine Java-Themen 3
G Alle möglichen Permutationen einer Folge n Allgemeine Java-Themen 3
V Alle Klassen eines Package auflisten? Allgemeine Java-Themen 6
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
@ RegEx: Alle Sonderzeichen ausser dem Punkt Allgemeine Java-Themen 4
G Alle Möglichen Kombinationen einer Liste Allgemeine Java-Themen 11
H Alle möglichen Hochkommata ausschließen Allgemeine Java-Themen 6
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
K Suche alle Objekte einer bestimmten Klasse Allgemeine Java-Themen 2
N Unter Mac Os X alle laufenden Prozesse ausgeben Allgemeine Java-Themen 3
S Änderung an Proberties datei an alle User weitergeben? Allgemeine Java-Themen 7
P Observer, nicht alle updates bearbeiten Allgemeine Java-Themen 2
der JoJo [TreeSelection] wie bekomme ich alle Elemente Allgemeine Java-Themen 4
G Alle Zeichen des Alphabets ausgeben Allgemeine Java-Themen 4
G Alle Möglichkeiten n Elemente Anzuordnen. Allgemeine Java-Themen 13
0 Alle Teiler einer Zahl performant berechnen? Allgemeine Java-Themen 9
J Funktion alle Möglichkeiten berücksichtigen Allgemeine Java-Themen 5
G HTML file Alle relativen URL in absolute URL umschreiben? Allgemeine Java-Themen 12
D FileWriter, PrintWriter und wie sie alle heißen. Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben