Hi,
We have integrated the HttpClient library into our application, where it
is used to issue simple POST requests via HTTPS to a remote server and
processes the response. Our use of this library is not very
significant, I have pasted into this email the extent of our usage to
give you an indication of the fact that we are not doing anything
complicated (see below).
The application works perfectly when running on Tomcat 5.0.x, and then
in our QA environment on WebSphere 5.1. However, when we give the EAR
file to our customer for deployment (onto a machine to which we have no
access, they do the deployment), it seems that everything works except
for the component that makes use of HttpClient. When the HTTP request
is issued by our code, we find this message in the WebSphere logs:
[6/21/06 11:21:55:467 EDT] 215da05f SystemOut O 2006-06-21
11:21:55,452 DEBUG [Servlet.Engine.Transports : 0]
httpclient.HttpMethodDirector (HttpMethodDirector.java:442) -
Operation timed out: connect:could be due to invalid address
java.net.SocketException: Operation timed out: connect:could be due to
invalid address
We have ruled out the possibility that the customer's server is unable
to access the remote server by asking our customer to issue a POST
request using a web browser from the server machine -- the response was
successful.
We are directing the "httpclient.wire" logger output to a FileAppender
in our log4j.properties. In our development and QA environments, this
file is full of log messages from HttpClient. However, in our
customer's deployment, this is an empty file.
Has anyone seen this symptom before? Absolutely *zero* log data from
the "httpclient.wire" loggers, not even a connection attempt? Can
anyone give any ideas as to what might have led to this situation?
Remember, everything seems to work under Tomcat 5.0.x and a different
WebSphere 5.1, so it does not appear to be a problem in our code or with
the remote server.
Thanks in advance,
Erik
Here is the extent of what we are doing with HttpClient, I have added
comments specific to this email with "//+++":
HttpClientParams httpClientParams = new HttpClientParams();
httpClientParams.setSoTimeout(HTTP_SOCKET_TIMEOUT_MILLIS);
//+++ HTTP_SOCKET_TIMEOUT_MILLIS is set to 60000
HttpClient client = new HttpClient(httpClientParams);
PostMethod post = new PostMethod(targetUrl);
//+++ targetUrl is the https:// URL we are accessing
post.addParameters(parameters);
//+++ parameters is a NameValuePair[] with about eight variables
try {
int responseCode = client.executeMethod(post);
//+++ according to our analysis, the above line throws the
exception
if (HttpStatus.SC_OK != responseCode) {
throw new Exception("Expected response " +
HttpStatus.SC_OK + " from URL '" + targetUrl + "' but got '" +
responseCode + "'");
}
setLastResponseBody(post.getResponseBodyAsString());
}
catch (Exception e) {
LOG.error(e);
setLastResponseBody(null);
}
finally {
try {
post.releaseConnection();
}
catch (Exception e) {
// can't do much if this happens
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]