Socked closed - wie behandeln ?

Joob

Top Contributor
Folgender Fehler kommt beim Start meiner Anwendung in unregelmäßigen Abständen.

Woher kommt der Fehler ?
Was kann man tun um diesen abzufangen, ich weiß innerhalb der Exception, aber muss ich die Anwendung dann beenden?
Woher kommen die http connection in den Zeilen 5 und 6 ich habe alles auf https umgestellt ?


Code:
Okt. 29, 2019 7:05:57 AM org.joobsoft.vt.CONTROLLER.AppStartController initialize
SEVERE: null
java.net.SocketException: Socket has been closed or broken
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:418)
    at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:171)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1362)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1337)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220)
    at org.joobsoft.vt.SYS.DataAccessClass.getDataArrayHttps(DataAccessClass.java:315)
    at org.joobsoft.vt.SYS.DataAccessClass.getDataHoster(DataAccessClass.java:82)
    at org.joobsoft.vt.SYS.CLASSES.Qcla.log_LoginController_getruntimes(Qcla.java:236)
    at org.joobsoft.vt.CONTROLLER.YouController.getstatisticdata(YouController.java:232)
    at org.joobsoft.vt.CONTROLLER.YouController.injectMainController(YouController.java:69)
    at org.joobsoft.vt.CONTROLLER.AppStartController.initialize(AppStartController.java:108)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
    at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
    at org.joobsoft.vt.CONTROLLER.LoginController.handle_CB_LOGIN(LoginController.java:197)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
    at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
    at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1784)
    at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8890)
    at javafx.controls/javafx.scene.control.Button.fire(Button.java:203)
    at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.keyReleased(ButtonBehavior.java:161)
    at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Scene$KeyHandler.process(Scene.java:4070)
    at javafx.graphics/javafx.scene.Scene.processKeyEvent(Scene.java:2121)
    at javafx.graphics/javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2597)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:217)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:149)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$1(GlassViewEventHandler.java:248)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:247)
    at javafx.graphics/com.sun.glass.ui.View.handleKeyEvent(View.java:547)
    at javafx.graphics/com.sun.glass.ui.View.notifyKey(View.java:971)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:830)
 
K

kneitzel

Gast
HttpUrlConnection ist einfach nur die super class von HttpsUrlConnection. Und gewisse Funktionalität befindet sich da halt drin und die wird verwendet.

Was Du bei der Exception machen musst, musst du wissen. Was macht denn Deine Applikation ehe das Problem auftritt? Üblich ist, dass man ggf. Daten sichert und so. Aber das kannst nur Du wissen.

Ansonsten ist das Problem, dass der SSL Handshake nicht zustande kommt. Das kann an vielen Dingen liegen. Wenn es auf einem Client mal geht und mal nicht, dann ist evtl. das Netzwerk gestört oder der Server, den Du ansprichst, hat Probleme ... Das ist aber so nicht zu sagen oder zu sehen.
 
K

kneitzel

Gast
Ich denke, dass der TE die Problematik recht deutlich erläutert hat auch wenn nicht wirklich viele Informationen gegeben wurden. Und es war eigentlich allen (außer Dir) klar, dass es da nicht um die Frage ging, wie man generell in Java eine Exception abfängt.

Was man rauslesen kann, ist, dass eine Verbindung bereits besteht. Aber darüber hinaus wird es rar. Also eher weniger hilfreich...
Wo siehst Du, dass eine Verbindung besteht? Bzw. was verstehst Du unter "Verbindung"?

Also Verbindung aus Anwendungssicht ist ja die SSL verschlüsselte Verbindung und die gab es nie, denn der SSL HandShake ist ja fehlgeschlagen. (Grundlagen SSL, z.B. unter https://ssl.de/ssl.html zu finden.)

Also aus Anwendungssicht gab es keine Verbindung und da keine Verbindung zustande gekommen ist, kann es auch keinen OutputStream geben. (Gäbe es die Verbindung und nur ein Problem mit der bestehenden Verbindung, dann gäbe es den Stream aber dann eben keine Nutzung des Streams.)
 
K

kneitzel

Gast
Ich glaube nicht das ich mit Dir weiter diskutieren muss...

Viel Spaß noch bei Deiner Kaffeesatzleserei. Mir ist das ohne zusätzliche Infos zu dumm.

Eine Diskussion gab es auch nicht. lediglich einfache Hinweise. Und es geht um kein "Kaffeesatzlesen" sondern um die Auswertung eines einfachen Stacktraces. Wenn man dem TE auf "Woher kommen die http connection in den Zeilen 5 und 6 ich habe alles auf https umgestellt ?" antworten will, dann gehört dies mit dazu, denn da steckt ja die notwendige Information drin, auf die er sich ganz offensichtlich bezieht.

Ach ja - bist Du zufällig ein Benutzer, der einst als k. hier angemeldet gewesen ist?
Bezieht sich das auf mich? Oder auf Joob? Weil Du ja Joob zitierst, vermute ich einmal, dass du Ihn meinst. Solltest du auf mich zielen, dann würde ich Dich bitten, dich klarer auszudrücken. Ist das irgendwas "Internes"? Wer ist k.?
 
K

kneitzel

Gast
k war ein ehmaliges Mitglied, der dieses Forum wegen Trollen wie Tobias verlassen hat. Und Tobias würde es zwar nie zugeben, aber er vermisst ihn sehr. Sieht man daran, dass er immer wieder seinen namen (bzw. Kürzel) erwähnt.
Ah, ok. Danke für die kurze Erläuterung.

Also ist tobias-nrw auch nicht der Forum-Scheriff ... nicht dass ich mich in meinem ersten Post gleich mit dem anlege, der hier was zu sagen hat oder so :)
 

Joob

Top Contributor
Hallo, ich bins der mit der Frage.

Schönen Dank erst einmal für die Erläuterung mit dem HttpConnect.

Hab ich das richtig verstanden, das SSL ist nicht zustande gekommen ? Das würde aber dann bedeuten das die Ursache beim Hoster liegt und ich mir jetzt überlegen muss wie ich darauf reagieren kann.

Was mich noch interessieren würde ist, kann ich prüfen ob der SSL Handshake erfolgreich war ?
Dann könnte ich eventuell reagieren bevor es zu der Exception kommt.
 
K

kneitzel

Gast
Du prüfst, indem Du die Verbindung aufbaust.

Also bezüglich Schuld zu argumentieren bringt erst einmal nichts. Die Frage ist einfach erst einmal, welche Protokolle der Hoster unterstützt und welche Du unterstützt (So es daran liegen sollte. Ohne Details ist das nicht zu sagen!)

SSL ist ja nicht gleich SSL. Es kann z.B. sein, dass der Hoster nur Protokolle zulässt, die im Java deaktiviert sind. Also SSLv3 ist z.B. in java deaktiviert. Das ist z.B. bezüglich SSLv3 hier erläutert: https://stackoverflow.com/questions/28236091/how-to-enable-ssl-3-in-java

Also wenn Du oder der Hoster einen alten Stand hat und der andere einen Neuen, dann ist sowas denkbar. Und wenn es um die Abhandlung eines Logins geht, dann würde ich mich da wirklich schlau machen um sicher zu gehen, dass die Sicherheit gewährleistet ist.
 

Joob

Top Contributor
Das mit der Verantwortung ist so gemein, das mein Code in Ordnung ist.
Das ist wohl gegeben. Da der Fehler nur sporadisch auftritt.
Auch die Protokolle beim Hoster sind damit auszuschließen. Oder ?

Ich denke das es sich wenn das was ich oben geschrieben habe richtig ist,

es darum geht, den Fehler nach Verbindungsaufbauversuch identifizieren und ggf. einen neuen Versuch die
Verbindung aufzubauen zu starten.
 

mihe7

Top Contributor
Das mit der Verantwortung ist so gemein
ROFL.

Auch die Protokolle beim Hoster sind damit auszuschließen. Oder ?
Du kannst gar nichts ausschließen und das musst Du in der Regel auch nicht: Du hast einen Kommunikationsfehler und auf den willst Du reagieren.

den Fehler nach Verbindungsaufbauversuch identifizieren
Der Fehler ist eine IOException, genauer eine SocketException. Mehr musst Du an der Stelle nicht wissen. Du kannst den Verbindungsaufbau noch ein paar mal versuchen und wenn es dann immer noch nicht klappt, den Spaß entsprechend Loggen und dem Anwender mitteilen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Stream closed - Obwohl nicht manuell geschlossen! Java Basics - Anfänger-Themen 0
N Java.io.ioexception: Stream closed Java Basics - Anfänger-Themen 2
H exception "java.io.IOException: Stream closed" Java Basics - Anfänger-Themen 10
S Resultset Closed (Mysql) Java Basics - Anfänger-Themen 5
alderwaran closed source jar, kein javadoc. was macht methode x eigentlich? ( oracle forms pjc beans ) Java Basics - Anfänger-Themen 2
D JSP: IOException: Stream closed nach dispatchter.forward(..) Java Basics - Anfänger-Themen 13
O Java 17 keine Pflicht um Exceptiones zu behandeln? Java Basics - Anfänger-Themen 2
S Rekursives Durchlaufen eines Verzeichnisses - AccessDeniedException behandeln Java Basics - Anfänger-Themen 1
S Groß- und Kleinbuchstaben gleich behandeln Java Basics - Anfänger-Themen 3
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
G Objekt wie Objekt anderer Klasse behandeln Java Basics - Anfänger-Themen 4
S Benutzereingabe über Scanner Klasse korrekt behandeln Java Basics - Anfänger-Themen 9
J Ausnahmen behandeln aber wie?! Java Basics - Anfänger-Themen 17
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
B Events behandeln Java Basics - Anfänger-Themen 4
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
A Text als Link behandeln Java Basics - Anfänger-Themen 8
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
sliwalker CVS-Datei einlesen und Fehler richtig behandeln Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben