2010-01-29 4 views
1

J'utilise un serveur Webphere. J'effectue un téléchargement de fichier via une servlet en utilisant les méthodes Apache FileUpload.Ajax demande lors d'un téléchargement de fichier prend beaucoup de temps à compléter

Je joins un écouteur à ce FileUpload qui met à jour un champ "pourcentage" indiquant quel pourcentage de la requête a été traité. La requête est dirigée vers un iframe (la cible du formulaire est un iframe) de sorte que la page qui a déclenché la requête n'ait pas à attendre que la réponse soit complète et par conséquent elle n'affiche pas une page vierge pour l'utilisateur. J'ajoute aussi une référence à l'écouteur de progression à la session.

Depuis la page JSP dès que j'exécute le submit sur le formulaire, après 1 seconde et ensuite chaque seconde je lance une requête ajax qui va à une servlet qui recherche le ProgressListener et répond avec le champ pourcentage. Le processus fonctionne bien, mais sur Websphere, cette requête Ajax peut parfois prendre jusqu'à 30 secondes! J'ai testé la même chose sur un serveur Tomcat simple et là la demande/réponse sort en une seconde.

Qu'est-ce qui pourrait ne pas fonctionner? Est-ce un paramètre de serveur?

Merci,

Modifier: Le code à l'intérieur du servlet qui obtient le pourcentage de la session court dès que la demande est faite. Le goulot d'étranglement semble être de remettre la demande au navigateur client.

Répondre

1

Avez-vous configuré websphere pour compiler et mettre en cache la page jsp, ou recompile-t-il à chaque fois? Vous pouvez utiliser AOP, AspectJ ou Spring, ou un profileur, pour voir ce qui se passe avec l'appel ajax, de sorte que vous pouvez surveiller sans modifier le code dans la page jsp. Le profileur peut être un meilleur point de départ, juste pour que vous puissiez regarder globalement ce qui se passe, puis utiliser des aspects pour surveiller de manière fine et décider où se trouve le goulot d'étranglement.

Vous pouvez également voir si la précompilation des pages JSP vous aidera. Ce tutoriel devrait être utile: http://publib.boulder.ibm.com/infocenter/wchelp/v6r0m0/index.jsp?topic=/com.ibm.commerce.samples.doc/tutorial/tdedeployjsp.htm

+0

le problème n'est pas avec le JSP en cours de compilation/précompilé. Je téléchargeais un fichier de 264 Mo qui générait plus d'un appel ajax, au deuxième appel ajax, toute compilation était déjà faite. –

+0

Ainsi, utilisez firebug pour profiler votre appel ajax sur le navigateur, utilisez Fiddler pour surveiller le trafic et profiler le serveur pour voir quel est le ralentissement sur le serveur. Entre tous ces éléments, vous devriez trouver le problème. –

Questions connexes