2009-07-08 9 views
2

J'utilise Java pour créer une application Web. L'application doit charger un formulaire qui est envoyé à une jsp qui appelle une longue logique métier. J'ai besoin que le jsp renverra un message comme "merci d'utiliser mon service, un email vous sera envoyé quand le processus sera terminé."Exécuter une méthode sans bloquer le client

Le problème est que si je vais écrire quelque chose comme:

<html> 
<head></head> 
<body> 
... 
<span>thank you for using my service, an email will sent to you when the proccess is done</span> 
... 
<% businessClass.doLongOperation(); %> 
... 
... 
</Body> 
</html> 

le jsp fonctionnera pendant longtemps et l'utilisateur devra attendre que l'opération à la fin. De plus, si l'utilisateur ferme le navigateur, je ne suis pas sûr que le jsp continuera son travail.

Comment puis-je isoler l'opération longue de la jsp de sorte que l'utilisateur n'aura pas à attendre tout le temps d'exécution et comment puis-je faire l'exécution de l'opération longue ne dépend pas du navigateur?

Naor

Répondre

1

Votre JSP est probablement soutenu sur le côté serveur par un servlet ou action Struts ou contrôleur Spring MVC.

Dans ce but, peform une exécution asynchrone:

executor.execute(new Runnable() { 

    public void run() { businessClass.doLongOperation(); } 
}); 

Lorsque le executor est une instance de java.util.concurrent.Executor.

Questions connexes