# Tomcat 6 ergibt Fehler - java.net.SocketException



## brauner1990 (29. Jun 2011)

Tag Community,

1. entshcludigung falls ihr den Titel nicht treffend findet, aber mir ist kein besserer eingefallen ohne direkt den Sachverhalt zu schildern.

2. zum Problem
Wenn ich meine Datenquellen aus einer Intranetquelle updaten will geschieht dies per HTTPS - Connection. Wenn ich nun meinen Java JunitTest durchlaufen lassen funktioniert alles wunderbar. Wenn ich nun meine Methode aus der WebOberfläche aufrufe, welche ich selber geschrieben habe (Servlets + JSP). Der Junit Test testet alle meine Datenlinks aus meiner Datenbank und prüft auch, ob diese nicht  nur als Link valide sind, sondern auch ob es funktioniert sich von ihnen Daten zu laden. Das SSL-Zertifikat kann ich leider nicht hochladen, ebenso nur Teile des Quelltextes. Beim automatischen Durchlauf im Junit brauch jeder Zugriff maximal 5 Sekunden. Meine Excpetion wird nach 300 Sekunden geworfen. Hier erstmal die Exception..

```
DEBUG - class: java.lang.Class - Wed Jun 29 14:40:59 CEST 2011
2011-06-29 14:43:59,462 [http-8080-3] ERROR helfer.Hilfe - java.net.SocketException: Unexpected end of file from server
java.net.SocketException: Unexpected end of file from server
	at sun.net.[url]www.http.HttpClient.parseHTTPHeader(HttpClient.java:769[/url])
	at sun.net.[url]www.http.HttpClient.parseHTTP(HttpClient.java:632[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1600[/url])
	at sun.net.[url]www.http.HttpClient.parseHTTPHeader(HttpClient.java:762[/url])
	at sun.net.[url]www.http.HttpClient.parseHTTP(HttpClient.java:632[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1600[/url])
	at sun.net.[url]www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:164[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1177[/url])
	at sun.net.[url]www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234[/url])
	at helfer.Hilfe.getBufferedReaderFromHttpsUrl(Hilfe.java:70)
```
In Zeile 1 startet der "Download".

Habt ihr vlt eine Idee?

Hier noch der dafür wichtige Quelltext.

```
public static BufferedReader getBufferedReaderFromHttpsUrl(String link) throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException, IOException {
        String protocol = link.substring(0, link.indexOf("://"));
        String host = link.substring(link.indexOf("://") + 3, link.indexOf(".de") + 3);
        int port = 443;
        String file = link.substring(link.indexOf(".de") + 3);
        Authenticator.setDefault(new Authenticator() {

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("username", "password".toCharArray());
            }
        });
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, Hilfe.getAllTrustingTrustManager(), new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(Hilfe.getHostnameVerifier());
        HttpsURLConnection https = null;
        URL url = new URL(link);// new URL(protocol, host, port, file);
        InputStreamReader isr = null;
        InputStream ala = null;
        try {
            https = (HttpsURLConnection) url.openConnection();
            Debug.debugAusgabe(Calendar.getInstance().getTime().toString(), Hilfe.class);
            ala = https.getInputStream();
            Debug.debugAusgabe(Calendar.getInstance().getTime().toString(), Hilfe.class);
            isr = new InputStreamReader(ala);
            Debug.debugAusgabe("Hier war ich jetzt und habe den BufferedReader zurueckgeworfen.", Hilfe.class);
        } catch (SocketException se) {
            Logger.getLogger(Hilfe.class).log(Level.ERROR, se);
            se.printStackTrace();
        } finally {
            return new BufferedReader(isr);
        }
    }
```

Ich bedanke mich im Vorraus.


----------



## brauner1990 (29. Jun 2011)

Nach weiterer Fehlersuche und googlei woran es liegen könnte bin ich auf den Hinweis gestoßen mit den Leerzeichen ... habe ich nun auch geprüft, es kommen keine Leerzeichen oder sonderzeichen oder ähnliche ungewohnte laute vor ...

hier ein beispielhafter Link, wie er in Java vom Frontend angekommen ist und verarbeitet wird ... 

Error while downloading "https://subdomain.domain.tld/subdirectory/export.php?id=10600"


----------



## brauner1990 (7. Jul 2011)

Damit nun auch zukünfitge Leute wissen woran es lag. Der Tomcat wurde durch netbeans gestartet und die projekte durch netbeans deployed. darin lag der fehler!

plz close


----------

