JSP Hintergrundverarbeitung in JSP

Basti91

Mitglied
Hallo, ich möchte (vereinfacht dargestellt) folgendes implementieren:

Eine JSP mit einem POST-Formular auf die gleiche JSP.
Eine Javascript-Funktion prüft auf Onload der JSP, ob ein bestimmter Button des Formulars gedrückt wurde. Ist dies der Fall, wird dem User dies per Message-Box (javascript: window.confirm) mitgeteilt. Außerdem wird eine Java-Methode gestartet, die jedoch im Hintergrund ablaufen soll, sodass der User weiter mit dem Formular arbeiten kann. Leider wird die Message-Box jedoch erst zur Terminierung der Java-Methode angezeigt. Ich habe bereits versucht, die Methode in einen Thread zu packen, was leider auch nicht geholfen hat.

Hier ein wenig Pseudo-Code um das Problem zu verdeutlichen:

Java:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

	<script>
	function popup(){
		
		<% if (request.getParameter("button")!=null){
			 out.println("window.confirm(\""+request.getParameter("button")+"\");");
			 
			 new DoSomethingThread().run();
		       }
		%>
	}
	</script>
            <body onload="popup()">
		<form name="form" action="gleicheJSP.jsp" method="post">
                                <input name="button" type="submit" value="Klick!">
                          </form>
             </body>
</html>
 
Zuletzt bearbeitet:

CptSocket

Aktives Mitglied
Hallo Basti

Der Aufruf von run() führt nicht dazu, dass ein neuer Thread gestartet wird. Dazu müsstest du die start()-Methode aufrufen. ABER: Multithreading im Jee-Umfeld ist eigentlich untersagt (siehe auch EJB Restrictions).

Wenn du in JEE eine Aktion asynchron auslösen möchtest, müsstest du das entweder über JMS oder eine mit @Asynchronous gekennzeichnete Methode eines SessionBeans entkoppeln (Siehe Asynchronous Method Invocation - The Java EE 6 Tutorial).


Freundliche Grüsse
CptSocket
 

Neue Themen


Oben