Thread start bei Java Web Anwendung

brauner1990

Bekanntes Mitglied
Schönen Guten Morgen Community,

ich habe da mal eine Frage, hoffentlich ist sie nicht zu banal.

Wenn ich einen Thread erstelle, dieser sich selbst als
Code:
public static final
Variable hat (sozusagen nach dem Singleton Prinzip), wann wird dieser gestartet?

Kennt ihr eine gute und saubere Lösung, bestimmte Sachen direkt nach dem deploy zu starten, also ohne Aufruf einer Seite des Projekts?

Infos:
Server: Tomcat 6.0.26​
 
PSF-Felder werden initialisiert wenn der Classloader in berührung mit der Klasse kommt.
Also Entweder wenn deine singleton-klasse per "Import ...;" referenziert wird,
eine Methode eine Referenz auf deine Klasse hat,
oder per Reflection in den Classloader gerät.
 
Hi,
du schreibst eine Klasse, die den Listener implementiert und die 'verdrahtest' du in deiner server.xml vom Tomcat mit <listener>DeinListener</listener>. Wie das genau heißt, steht in der Tomcat-Doku. In der 'contextInitialised'-Methode, die beim Tomcat-start ausgeführt wird, führst du dann deinen Code aus.

Grüße
Peter
 
Die web.xml kann angeben dass ein Servlet beim Start von Tomcat geladen werden soll:
[XML]
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>...</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>[/XML]

Dann braucht man nur noch die init Methode zu (über)schreiben in der man z.B. den Thread starten kann.
 
Hi,
du schreibst eine Klasse, die den Listener implementiert und die 'verdrahtest' du in deiner server.xml vom Tomcat mit <listener>DeinListener</listener>. Wie das genau heißt, steht in der Tomcat-Doku. In der 'contextInitialised'-Methode, die beim Tomcat-start ausgeführt wird, führst du dann deinen Code aus.

Grüße
Peter

Ja, das hatte ich bereits gelesen im Anschluss, leider will ich es so machen, das mein Projekt ohne an den cfg Files rumzuspielen funktioniert.

Die web.xml kann angeben dass ein Servlet beim Start von Tomcat geladen werden soll:
[XML]
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>...</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>[/XML]

Dann braucht man nur noch die init Methode zu (über)schreiben in der man z.B. den Thread starten kann.

Das ist die richtige Richtung ... sollte dann ja eigentlich Funktionieren ...

---------------------------
EDIT
---------------------------

Es funktioniert. Eintragen in die web.xml mit der Klasse:
Code:
public class OwnServletContextListener extends HttpServlet implements ServletContextListener {
 
Zuletzt bearbeitet:

Zurück
Oben