Hallo,
wir haben zur Zeit ein großes Problem mit dem HTTP-Client von Jakarta.
Vielleicht liegt es auch an einer Konfiguration vom Apache das wissen wir nicht.
Das Problem ist, dass der Apache von Zeit zu Zeit abstürzt und neu gestartet werden muß....
Laut Logging Einträgen erreichen wir permanent die MaxRequestsPerChild die wir auf 500 gesetzt haben.
Über Port 80 scheint das Problem nicht so gravierend zu sein.
Sobald wir aber über Port 443 gehen erhöht sich die Anzahl der Prozesse ungemein schnell.......
Im Client haben wir eine release connection eingebaut was aber nicht zu funktionieren scheint.
Wir benutzen den Apache 2.2.6 und von Jakarta den Client 3.0.1
Mit WireShark haben wir ein Monitoring durchgeführt.
Das erschreckende war, das auch hier die Checksummen auf TCP Protokoll Ebene nicht korrekt waren.....
Hier mal unser Client:
Wenn wir einen Request über FireFox ausführen ist alles in Ordnung.
Scheint also wirklich ein Konfigurationsproblem beim HttpClient zu sein.
Hat vielleicht Jemand eine Idee was hier falsch läuft ?
Gruß Jens
wir haben zur Zeit ein großes Problem mit dem HTTP-Client von Jakarta.
Vielleicht liegt es auch an einer Konfiguration vom Apache das wissen wir nicht.
Das Problem ist, dass der Apache von Zeit zu Zeit abstürzt und neu gestartet werden muß....
Laut Logging Einträgen erreichen wir permanent die MaxRequestsPerChild die wir auf 500 gesetzt haben.
Über Port 80 scheint das Problem nicht so gravierend zu sein.
Sobald wir aber über Port 443 gehen erhöht sich die Anzahl der Prozesse ungemein schnell.......
Im Client haben wir eine release connection eingebaut was aber nicht zu funktionieren scheint.
Wir benutzen den Apache 2.2.6 und von Jakarta den Client 3.0.1
Mit WireShark haben wir ein Monitoring durchgeführt.
Das erschreckende war, das auch hier die Checksummen auf TCP Protokoll Ebene nicht korrekt waren.....
Hier mal unser Client:
Code:
public String requestServer()
{
String responseString;
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager()
{
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
{
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
{
}
}
};
// Install the all-trusting trust manager
try
{
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
SSLContext.setDefault(sc);
//HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
catch (Exception e)
{
System.out.println("### exception when disabling trust authentication ###");
e.printStackTrace();
}
//URL url;
URL user = null;
URLConnection conn;
try
{
user = new URL(this.serverUrl);
conn = user.openConnection();
}
catch (MalformedURLException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
//Prepare HTTP post
PostMethod post = new PostMethod(this.serverUrl);
//set request content
post.setRequestEntity(new StringRequestEntity(this.requestString));
//set request content type
post.setRequestHeader("Content-Type", this.contentType);
post.setRequestHeader("Connection", "close");
//post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
// Create HTTP client and make request
HttpClient httpclient = new HttpClient();
httpclient.getParams().setParameter(HttpClientParams.SO_TIMEOUT, 10000);
try
{
if(user == null)
{
user = new URL(this.serverUrl);
}
if(user.getUserInfo() != null)
{
//System.out.println("" + user.getUserInfo());
String hostName = user.getHost();
String authUser = user.getUserInfo().substring(0, user.getUserInfo().lastIndexOf(":"));
String authPass = user.getUserInfo().substring(user.getUserInfo().lastIndexOf(":") + 1);
httpclient.getState().setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(authUser, authPass));
}
}
catch (MalformedURLException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
try
{
int httpResult = httpclient.executeMethod(post);
responseString = post.getResponseBodyAsString();
post.setDoAuthentication(false);
post.releaseConnection();
return responseString;
}
catch (IOException ex)
{
ex.printStackTrace();
}
return "";
}
Wenn wir einen Request über FireFox ausführen ist alles in Ordnung.
Scheint also wirklich ein Konfigurationsproblem beim HttpClient zu sein.
Hat vielleicht Jemand eine Idee was hier falsch läuft ?
Gruß Jens
Zuletzt bearbeitet: