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..
In Zeile 1 startet der "Download".
Habt ihr vlt eine Idee?
Hier noch der dafür wichtige Quelltext.
Ich bedanke mich im Vorraus.
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..
Code:
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)
Habt ihr vlt eine Idee?
Hier noch der dafür wichtige Quelltext.
Java:
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.
Zuletzt bearbeitet: