# Java Application auf Tomcat



## user227 (14. Mai 2008)

Hallo, 
hab ein Problem bei einem Projekt, wo ich eine Webapplication erstellen soll: 
An eine Java-Application sollen diverse Werte (von einer Jsp-Seite) übergeben werden. Anschließend soll im Hintergrund alles Berechnet werden. Sprich der User kann seinen Browser wieder schließen. Sobald die Berechnung fertig ist soll der User per Email informiert werden. Leider habe ich keine Ahnung wie ich sowas als WebApplication implementieren kann. Mit Jsp, hab ich eine Idee. Allerdings funktioniert dies ja nicht im Hintergrund. Kann mir hier jemand weiterhelfen?

Vielen Dank


----------



## HLX (15. Mai 2008)

Du kannst aus einer JSP-Seite heraus Java-Klassen verwenden. Der sauberste Weg führt allerdings über ein Servlet.

Die JSP-Seite ruft über ein Formular (<form>) das Servlet auf - das Servlet stößt die Berechnung in der Java-Anwendung an. Um deiner Anwendung flexibilität hinsichtlich der Ausgabe zu geben, würde ich die Mail im Anschluss an die Berechnung ebenfalls vom Servlet aus versenden.


----------



## ms (15. Mai 2008)

Wenn diese Verarbeitung der Daten sehr lange Dauert (> 1min) dann klingt dass nach einer asynchronen Verarbeitung.
Das ist mit einfachen Boardmitteln nicht möglich, da ein HttpRequest immer einen HttpResponse zur Folge hat.
Dh, der Benutzer sollte zumindest den Response abwarten um zu Wissen, dass seine Daten am Server angekommen sind und verarbeitet werden, was aber nicht heißt, dass sie jetzt sofort verarbeitet werden. Sie werden also in eine Queue gestellt und demnächst abgearbeitet. Und damit sind wir schon beim Thema JMS bzw. eine leichtgewichtige selbstgebastelte Lösung mit einem Timer, der zB regelmäßig eine Datenbank abfragt und wenn Daten vorhanden sind, diese abarbeitet.

ms


----------



## user227 (15. Mai 2008)

Vielen Dank für die Antworten. Leider hab ich mich noch nicht alzu sehr mit Tomcat beschäftigt. Bis jetzt liegen dort  Java-Klassen die ich als JavaBeans in JSP-Dateien verwende. Da die Berechnung >1min ist muss ich das wohl mit einem timer realisieren. Ist meine überlegung also richtig, dass ich eine "normale" Java-Anwendung laufen lasse, die dauernd überprüft ob ein job ausgeführt werden soll (mit Hilfe einer Datenbank)?
Dann komm ich nämlich zu meiner nächsten Frage. Wie kann ich so eine Application in Tomcat starten? Habe bis jetzt wie gesagt nur jsp mit Tomcat gemacht. Oder ist es doch sinnvoller jms zu verwenden? allerdings wird doch dazu jboss, o.ä. benötigt, wenn ich das richtig gelesen habe. Leider steht mir nur Tomcat zur verfügung.


----------



## Atze (15. Mai 2008)

du kannst (wie ms schon sagte) dir über jsp die daten des benutzers in eine datenbank schreiben. das wäre dann schon alles, was mit nutzer / browser / jsp zu tun hat. wenn der nutzer seine daten in der datenbank hat, kann er den browser ja schließen.

als zweite komponente implemetierst du einen Thread (der am besten beim hochfahren des tomcats startet), der die datenbank überwacht, neue daten erkennt und diese an die verarbeitende applikation übergibt.

diese anwendung führt dann deine berechnungen aus, und wenn sie fertig ist schickt sie eine mail an den user.


----------



## ms (16. Mai 2008)

Falls du mit Threads nicht ganz so bewandert bist kannst du zB. auch zu Spring mit Quartz greifen.

ms


----------

