私の Web アプリケーションには、アプリケーションの多くの部分で使用されるグローバルな静的 HttpClient があります。次のように作成されます。
MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = new HttpConnectionManagerParams();
params.setConnectionTimeout( 15000 );
params.setSoTimeout( 15000 );
connectionManager.setParams(params);
httpclient = new HttpClient(connectionManager);
HttpClientParams clientParams = new HttpClientParams();
clientParams.setParameter("http.protocol.allow-circular-redirects", true);
clientParams.setParameter("http.protocol.max-redirects", 4);
httpclient.setParams(clientParams);
タイムアウトはほとんどのユースケースで問題ありませんが、特定の呼び出しではタイムアウトを短くしたいと思います。ので、私は持っています:
GetMethod get = new GetMethod(finalUrl);
get.getParams().setParameter("http.socket.timeout", new Integer(1000));
get.getParams().setParameter("http.connection.timeout", new Integer(1000));
HttpClientUtil.getShortTimeoutInstance().executeMethod(get);
それは動作しません。接続タイムアウトはまだ 15000 です。新しい HttpClient インスタンスを作成せずに GetMethod で特定の接続タイムアウトを設定できますか (これは、新しい HttpClient インスタンスを作成するのは得策ではないと考えているためです)。