# Java-Klasse mit Tomcat starten (kein Servlet)



## Verjigorm (22. Apr 2007)

Moin, ich bin absoluter Anfänger mit Tomcat, Servlets und so weiter.

Wie kann ich denn eine "normale" Java-Klasse beim Start des Tomcats laden?
Die Klasse muss verfügbar sein, bevor auf das Servlet zugegriffen wird.
Wie mache ich das denn?
Brauch diese Klasse eine main-Methode oder wie?

ich weiss auch nicht genau nach welchen Stichworten ich da suchen sollte, hab da schon einiges probiert

mfg


----------



## SlaterB (22. Apr 2007)

bisschen genauer:
soll sie nur 'verfügbar' sein (was immer das heißt)
oder ausgeführt werden ('main-Methode')

wenn du sie ausführen willst: warum den Tomcat damit nerven?
schreibe dir ein Start-Skript, in welchem du erst dein eigenes Programm ausführst,
und dann den Tomcat startest


(wie man das macht erkläre ich nicht, weiß ich auch gar nicht so genau,
eher ein Tipp zur Gedankensortierung  )


----------



## Verjigorm (22. Apr 2007)

Also ums genauer zu sagen:

Planung: Ich habe eine Javaklasse (vermutlich ein Thread) , der gestartet wird mit dem Tomcat (ich hab keinen Adminzugang zu dem Tomcat, nur Rechte für meine Projektdateien raufzuladen)
bzw. der irgendwie gestartet wird, wenn der Tomcat noch läuft (geht das überhaupt beim deployen des Projekts?) 
Im Konstruktor der Klasse wird ein Zugang zu einer eXist Datenbank aufgebaut, der dann für mehrere Servlets zur Verfügung stehen wird.

Das alles ist jetzt erstmal meine Planung, ich nehm auch gerne Verbesserungsvorschläge an


----------



## SlaterB (22. Apr 2007)

wenn dieser Thread offensichtlich Teil deiner Webanwendung ist,
dann würde ich ihn auch ganz normal als Teil der Webanwendung starten/ managen,

z.B. beim ersten Zugriff eines Servlets initialisieren
oder gerne auch beim Start des Servers

load-on-startup ist da ein Stichwort, z.B.
http://forum.java.sun.com/thread.jspa?threadID=606542&messageID=3521387


----------



## Verjigorm (23. Apr 2007)

ok, ich hab das jetzt mal versucht und starten lässt sich das Ding nur als Servlet mit <load-on-startup>1</load-on-startup>

das
<servlet-mapping>
     ...
</servlet-mapping>

kann weggelassen werden (und somit gibts dann keinen "ServletZugriff" von aussen auf die Klasse oder seh ich das falsch?)

Der Konstruktor gibt aus, dass er geladen wurde.

Ich frag mich nur, obs nicht auch anders geht, finde das irgendwie unschön


----------



## Gast (25. Apr 2007)

Schreib dir lieber einen ServletContextListener. Den kannst du dann in der web.xml über <listener>...</listener> bei der Initialisierung deiner Webapplication starten.


----------

