我在web應用程序中使用apache http客戶端(版本3.0,因爲我們有java 1.4並且無法更改它)。 我有用於向服務器發送POST請求的組件(類),並且此組件用於JSP頁面,即來自不同線程。如何爲Web應用程序配置apache http客戶端v3.0(多線程)
於是我在該組件的一些init()方法創建的客戶只有一次:
HttpClient client =
new HttpClient(new MultiThreadedHttpConnectionManager());
client.getHostConfiguration().setProxy(proxyHost, proxyPortInt.intValue());
HttpState state = new HttpState();
state.setProxyCredentials(new AuthScope(proxyHost, proxyPortInt.intValue()),
new UsernamePasswordCredentials(username, userpassword));
client.setState(state);
,然後在方法使用它,可以是訪問在多個線程:
PostMethod method = new PostMethod(urlStr);
method.setRequestEntity(new StringRequestEntity(requestStr));
method.setRequestHeader("Host", "the_same_host_every_time ");
method.setRequestHeader("Content-Type", "application/soap+xml");
method.setRequestHeader("Content-Length", String.valueOf(requestStr.length()));
InputStream responseStream = null;
try {
int resultCode = client.executeMethod(method);
responseStream = method.getResponseBodyAsStream();
...
這個應用程序每次向同一主機發出請求。 MultiThreadedHttpConnectionManager具有以下屬性:
- DEFAULT_MAX_HOST_CONNECTIONS 每個主機允許的連接的默認最大數量(每RFC 2616部分8.1.4,這個值缺省爲2.)
- DEFAULT_MAX_TOTAL_CONNECTIONS 連接的默認最大數量整體允許
我沒有改變它們。這是否意味着我的應用程序將能夠同時執行最大2個請求(因爲它們都是同一個主機)?爲什麼默認值是2?我應該更改DEFAULT_MAX_HOST_CONNECTIONS值(這個應用程序有很多用戶可以同時訪問JSP)。什麼是關於DEFAULT_MAX_TOTAL_CONNECTIONS,這個參數對我的應用很重要?
在此先感謝!
「我應該改變」,「對我的應用程序非常重要」?只有你能知道什麼對你很重要。試試吧,看看它是否讓你的事情變得更好。 – Mat 2011-04-25 07:07:14
我們不能嘗試,我們只提供我們的客戶幾個組件,但沒有完整的應用程序來測試。我只是試圖瞭解這個參數是什麼意思,什麼是最佳實踐。 – Mikhail 2011-04-25 07:10:01
如果您無法從1.4升級,則可以使用retroweaver將應用程序從新版本轉換爲1.4。 – 2011-04-25 07:12:26