# Thread start bei Java Web Anwendung



## brauner1990 (14. Jul 2011)

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 
	
	
	
	





```
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​


----------



## nocturne (14. Jul 2011)

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.


----------



## pizza1234 (14. Jul 2011)

Hi,
meinst du den hier?

Grüße
Peter


----------



## brauner1990 (15. Jul 2011)

pizza1234 hat gesagt.:


> Hi,
> meinst du den hier?
> 
> Grüße
> Peter



könnte weiterhelfen, nur wie soll ich diesen am besten einbinden?


----------



## pizza1234 (15. Jul 2011)

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


----------



## mjustin (15. Jul 2011)

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.


----------



## brauner1990 (18. Jul 2011)

pizza1234 hat gesagt.:


> 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.



mjustin hat gesagt.:


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



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

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

Es funktioniert. Eintragen in die web.xml mit der Klasse: 
	
	
	
	





```
public class OwnServletContextListener extends HttpServlet implements ServletContextListener {
```


----------

