Nach dem mein Crawler nun lauffähig ist,
und sich auch nicht mehr verläuft, hab ich das nächste Problem,
und keinen blassen Schimmer woran es liegen könnte:
^So sieht es aus, wenn ich in HTTPGet Request keinen Timeout setze, sondern dies global im Header
der Helfer klasse tue.
^So siehts mit jeweiligem gesetzten Timeout aus.
Die Klasse in der das Ganze stattfindet sieht so aus:
Ich muss dazu wohl sagen, das der Fehler erst nach einiger Zeit auftritt,
vorher läuft alles reibunglos. Erst ab einer bestimmten Tiefe bzw. Laufzeit
tritt der Fehler auf.
Hat jemand eine Idee woran es liegen könnte ?
Ist es vielleicht der Speicherverbrauch ?
Devil
und sich auch nicht mehr verläuft, hab ich das nächste Problem,
und keinen blassen Schimmer woran es liegen könnte:
Code:
java.lang.StackOverflowError
at java.net.SocketTimeoutException.<init>(Unknown Source)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at java.io.PushbackInputStream.read(Unknown Source)
at org.apache.commons.httpclient.HttpConnection.isStale(HttpConnection.java:533)
at org.apache.commons.httpclient.HttpConnection.isOpen(HttpConnection.java:468)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:660)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:529)
at HTTPGet.GetRequest(HTTPGet.java:25)
at Crawler.crawl(Crawler.java:51)
at Crawler.crawl(Crawler.java:98)
at Crawler.crawl(Crawler.java:104)
der Helfer klasse tue.
Code:
java.lang.StackOverflowError
at java.lang.Exception.<init>(Unknown Source)
at java.io.IOException.<init>(Unknown Source)
at java.io.InterruptedIOException.<init>(Unknown Source)
at java.net.SocketTimeoutException.<init>(Unknown Source)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at java.io.PushbackInputStream.read(Unknown Source)
at org.apache.commons.httpclient.HttpConnection.isStale(HttpConnection.java:533)
at org.apache.commons.httpclient.HttpConnection.isOpen(HttpConnection.java:468)
at org.apache.commons.httpclient.HttpMethodBase.processRequest(HttpMethodBase.java:2653)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1093)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:675)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:529)
at HTTPGet.GetRequest(HTTPGet.java:26)
at Crawler.crawl(Crawler.java:51)
at Crawler.crawl(Crawler.java:98)
^So siehts mit jeweiligem gesetzten Timeout aus.
Die Klasse in der das Ganze stattfindet sieht so aus:
Code:
public class HTTPGet
{
HttpClient http;
public HTTPGet(){
http = new HttpClient();
http.setState(new HttpState());
http.getHostConfiguration().setProxy("mmoproxy", 8080);
UsernamePasswordCredentials upc = new UsernamePasswordCredentials();
upc.setPassword("");
upc.setUserName("");
http.getState().setProxyCredentials(null,null ,upc);
}
public String GetRequest(String request){
try
{
//if(http.getHttpConnectionManager().getConnection(http.getHostConfiguration()).isOpen())
{
http.setTimeout(10000);
//http.getHostConfiguration().setProxy("mmoweb", 8080);
HttpMethod method = new GetMethod(request);
method.setDoAuthentication(true);
http.executeMethod(method);
String str = method.getResponseBodyAsString();
method.releaseConnection();
return str;
}
//return "";
}
catch (Exception e)
{
System.out.print("GetRequest: "+e.toString());
}
return null;
}
}
Ich muss dazu wohl sagen, das der Fehler erst nach einiger Zeit auftritt,
vorher läuft alles reibunglos. Erst ab einer bestimmten Tiefe bzw. Laufzeit
tritt der Fehler auf.
Hat jemand eine Idee woran es liegen könnte ?
Ist es vielleicht der Speicherverbrauch ?
Devil