2009-07-08 13 views
2

Ich verwende Java, um Webanwendung zu erstellen. Die Anwendung muss ein Formular laden, das seine Daten an ein JSP sendet, das eine lange Geschäftslogik aufruft. Ich brauche, dass die JSP eine Nachricht wie "Vielen Dank für die Verwendung meines Dienstes, eine E-Mail wird Ihnen gesendet, wenn der Prozess abgeschlossen ist."Führen Sie eine Methode aus, ohne den Client zu blockieren

Das Problem ist, dass, wenn ich so etwas schreiben werde:

<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> 

die jsp für lange Zeit ausgeführt werden sollen, und der Benutzer muss warten, bis der Vorgang zu beenden. Wenn der Benutzer den Browser schließt, bin ich mir nicht sicher, ob der JSP seine Arbeit fortsetzen wird.

Wie kann ich die lange Operation von der JSP isolieren, so dass der Benutzer nicht die gesamte Ausführungszeit warten muss und auch, wie kann ich die lange Operation Ausführung nicht auf den Browser abhängen?

Naor

Antwort

1

Ihre JSP wahrscheinlich auf der Server-Seite von einem Servlet oder Struts-Aktion oder Spring MVC-Controller unterstützt werden.

in diesem Objekt, peform eine asynchrone Ausführung:

executor.execute(new Runnable() { 

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

Wo die executor eine Instanz java.util.concurrent.Executor ist.

Verwandte Themen