# TCP- Verbindung nach Tomcat- Start (global) starten



## MQue (30. Jul 2009)

Morgen,

ich habe in meiner Web- Anwendung (in der Businesslogik) eine TCP- Klasse, welche beim starten der Webanwendung eine Verbindung zum Remote- Gerät aufbauen soll.
Meine Frage wäre jetzt, wo startet man die TCP- Verbindung, gibt es eine Möglichkeit, wenn der Tomcat- Server gestartet ist, dass dann meine Kommunikation startet?

lg


----------



## MQue (30. Jul 2009)

Oje, Ich hoffe es gibt was in diese Richtung, der Ablauf wäre so, dass nach dem starten des Tomcats eine TCP- Verbindung zu einem Remotegerät aufgebaut wird und die empfangenen Daten in die Datenbank geschrieben werden.
Wenn sich ein Client über eine JSP verbindet, dann werden die gewünschten Daten aus der Datenbank ausgelesen und diesem gesendet.

Die TCP- Kommunikation soll also immer laufen, egal ob ein Client verbunden ist oder nicht, also kann ich das nicht in einer init()- Methode eines Servlets machen.

Gibt's da in diese Richtung was oder ist das ein Sonderfall?

Hättet Ihr einen Vorschlag wie ich das realisieren kann?

Vielen Dank,
lg


----------



## FArt (30. Jul 2009)

Das ist kein typischer Anwendungsfall für einen Webserver. Dazu würde man in der Regel einen Applicationserver (mit integriertem Webserver) bemühen.
Deinen Funktionialität könnte man dort dann als Service implementieren.

Alternativen:
* Die Schnittstelle zwichen Webapplikationen und deinem Service ist sowieso nur die DB, somit kann der Service auch standalone laufen
* Du verwendeste einen Applicationserver wie z.B. JBoss
* Du integrierst deinen Service in den Tomcat z.B. als MBean. Google mal nach "tomcat" und "MBean"


----------



## MQue (30. Jul 2009)

ich hab mit jetzt MBean angesehen bzw. ein Tutorial durchgemacht und bin draufgekommen, wenn ich in dd (web.xml) einen Listener registriere (ServletContextListener), dann wird die Methode contextInitialized des Listeners genau einmal beim Starten des Tomcats aufgerufen, also genau das was ich brauche um meine TCP- Verbindung zu einem Remote- Gerät zu starten.

Sehe ich da was falsch oder kann ich das so verwenden?

lg


----------



## FArt (30. Jul 2009)

Das würde funktionieren, wenn das Servlet so konfiguriert ist, dass es beim Start des Tomcat auch mitgestartet wird und wenn das Servlet nicht beendet wird. Du solltest auch bei der Finalisierung darauf achten, dass du deine Applikation mitbeendest.

Aber noch mal: das funktioniert nur unter obigen Voraussetzungen und ist so nicht vorgesehen. Ich rate grundsätzlich von solchen "Tricks" ab. 

Wer sich in einer Enterpriseumgebung bewegt sollte sich auch so verhalten.


----------

