J'utilise apache http client (version 3.0 car nous avons java 1.4 et ne peut pas le changer) dans l'application web. J'ai un composant (classe) qui est utilisé pour les requêtes POST sur le serveur, et ce composant est utilisé sur les pages JSP, c'est-à-dire à partir de différents threads.Comment configurer apache http client v3.0 pour application web (multithreading)
Je crée donc le client qu'une seule fois dans une méthode init() de ce composant:
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);
et ensuite l'utiliser dans la méthode qui peut être accès à plusieurs fils:
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();
...
Cette application fait des demandes au même hôte à chaque fois. MultiThreadedHttpConnectionManager a les propriétés suivantes:
- DEFAULT_MAX_HOST_CONNECTIONS Le nombre maximum par défaut de connexions par hôte (par section RFC 2616 8.1.4, par défaut cette valeur à 2.)
- de DEFAULT_MAX_TOTAL_CONNECTIONS Le nombre maximum par défaut de connexions autorisé globalement
Je ne les ai pas encore modifiés. Cela signifie-t-il que mon application sera en mesure de faire la demande max 2 en même temps (parce qu'ils sont tous sur le même hôte)? Pourquoi la valeur par défaut est 2? Devrais-je changer la valeur DEFAULT_MAX_HOST_CONNECTIONS (il y a beaucoup d'utilisateurs pour cette application qui peut accéder à JSP simultanément). En ce qui concerne DEFAULT_MAX_TOTAL_CONNECTIONS, ce paramètre est-il important pour mon application?
Merci d'avance!
"Devrais-je changer", "Est-ce important pour mon application"? vous seul pouvez savoir ce qui est important pour vous. Essayez-le, voir si cela rend les choses meilleures pour vous. – Mat
Nous ne pouvons pas essayer, nous fournissons à nos clients seulement plusieurs composants, mais n'ont pas l'application complète à tester. J'essaie juste de comprendre ce que ces paramètres signifient et quelles sont les meilleures pratiques. – Mikhail
Si vous ne pouvez pas mettre à niveau à partir de la version 1.4, vous pouvez utiliser retroweaver pour transformer votre application d'une version plus récente vers la version 1.4. –