# Gemanagte ( kontrollierte ) Thread in JEE5



## RoNa (7. Mai 2011)

Hallo zusammen,

gibt es in JEE5 eine standardisierte Möglichkeit eigene Threads zu starten. Diese müssten unter Kontrolle des Applikation Servers stehen. Ich möchte nicht 'new Thread' aufrufen.

Unter Websphere gibt es die 'asynchronous beans', aber es ist kein JEE Standard. Ich würde gerne die Applikation unter Tomcat laufen lassen.

Kann mir jemand einen Tipp geben?

Gruß,

Robert


----------



## TheDarkRose (7. Mai 2011)

Wie sieht denn das eigentlich Problem aus?


----------



## RoNa (7. Mai 2011)

Für den Aufbau des Indexes einer Suchmaschine ( Apache Solr ) muss ich viele Worker Threads starten. Die sollen periodisch immer die gleiche Datei lesen und indizieren. 
Die Datei ist eine Logdatei, die ständig neu beschrieben wird.


----------



## mvitz (7. Mai 2011)

Evtl. könnte man für sowas auch einfach Quartz nutzen.


----------



## RoNa (8. Mai 2011)

Klar, es wäre auch damit möglich. Nur diese Threads / Jobs wären vom Application Server unkontrolliert und würden z.B. beim Beenden des Applikation Servers im Nirvana weiterlaufen.

Deswegen die Suche nach standardisierten Möglichkeit.


----------



## Gelöschtes Mitglied 5909 (8. Mai 2011)

1. Tomcat ist kein vollständiger J2EE5 AppServer
2. 



> Nur diese Threads / Jobs wären vom Application Server unkontrolliert und würden z.B. beim Beenden des Applikation Servers im Nirvana weiterlaufen.



Äääh? Wenn du den Server beendest ist die VM weg, ergo auch die Threads.

Du könntest Quartz verwenden, Spring (25. Task Execution and Scheduling), oder auch einfach einen TimerTask nehmen.


----------



## FArt (9. Mai 2011)

Im Tomcat gibt es keine wirklich schöne Lösung dafür. Was einer wirklich schönen Lösung sehr nahe kommt ist ein MBean im Tomcat, evtl. als Valve für Tomcat (falls der Service irgendwie am Call-Context partizipieren soll). Das könnte man dann mit Quartz als Scheduler realisieren, pure Java (ScheduledExecutorService) ist aber dann auch ausreichend.
Sonst würde ich empfehlen, z.B. einen JBoss zu verwenden. Da gibt es auch asynchrone Beans, Scheduler (Timer Service) und einen Tomcat. Nicht benötigte Services kann man getrost raus schmeißen und der AS bietet trotzdem noch einiges an Vorteilen gegenüber einem Tomcat.


----------



## Deadalus (9. Mai 2011)

Im JEE6 Standard sind asynchrone EJB enthalten. Ich würde auch raten auf JEE 6 umzustellen, da kein Grund existiert es nicht zu tun ;-)


----------



## RoNa (9. Mai 2011)

Wir haben in der Firma erst JEE 5. Ich würde gerne JEE6 nutzen.


----------



## FArt (9. Mai 2011)

robertnac hat gesagt.:


> Wir haben in der Firma erst JEE 5. Ich würde gerne. JEE6 nutzen.



Auch mit JEE 5 kommst du schon sehr weit. Manche Sachen kann man ja AS spezfifisch lösen, denn oft gibt es schon fertige Implementierungen, bevor der Standard verabschiedet wird. Eine Portierung danach ist in der Regel trivial.


----------

