JSP Hintergrundverarbeitung in JSP

Diskutiere Hintergrundverarbeitung in JSP im Web Tier Forum; Hallo, ich möchte (vereinfacht dargestellt) folgendes implementieren: Eine JSP mit einem POST-Formular auf die gleiche JSP. Eine...

  1. Basti91
    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:

    Code (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: 21. Jan. 2015
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. CptSocket
    CptSocket 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
     
Thema: Hintergrundverarbeitung in JSP