Serverdienst in Tomcat implementieren

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo,

ich habe hier einen kleines Java Programm, welches mir im Netzwerk einige Aufgaben wahr nimmt (So eine Art Proxy... Quellcode liegt vor). Nun muss ich dieses Programm sowieso als Dienst mit dem Betriebssystem starten. Ausserdem muss ich noch eine Konfigurationsoberfläche entwickeln. Nun habe ich mir gedacht, dass ich diese Oberfläche mit JSF im Tomcat erstelle. Nun wäre es für mich denkbar, das ich dieses Programm im Tomcat gleich mitstarte.

2 Vorteile sehe ich daraus: Ich muss dieses Programm nicht extra als Dienst im System hinterlegen, und meine JSF Applikation könnte direkt auf die Methoden des Programmes zugreifen um Konfigurationsänderungen zu übergeben und Laufzeitvariablen auszulesen und anzuzeigen.

Mein Problem: Ich habe keine Ahnung, wie ich so ein Programm im Tomcat als ständig laufende Applikation integriere und wie ich dann von meiner JSF Applikation darauf zugreifen kann. Ausserdem habe ich keine Ahnung, nach was ich in google suchen soll. Also, ich weiß was ich will, das hört sich auch richtig geil an, aber ich habe keine Ahnung, wie ich es umsetzen kann :(
 

freez

Top Contributor
Guten Abend :)

naja, ich weiß zwar nicht, ob ich es jetzt richtig gemacht habe, aber ich abe das Programm einfach in ein Servlet gesteckt und in der init Methode gestartet. mit einem load-on-Startup habe ich das Servlet von Anfang an am laufen. Spricht etwas dagegen es so zu gestalten?

Nun möchte ich natürlich noch die Konfigurationsseiten mit jsf erstellen. Da habe ich momentan noch einen Knackpunkt. Wie kommt meine managedBean an das laufende Servlet um da publicMethods aufzurufen?
 

HLX

Top Contributor
Implementiere es am Besten so, dass das Servlet deine Managed-Bean verwurstet.

Die Bean hat Session-Scope? Dann leite den Request einfach an dein Servlet weiter.
 

freez

Top Contributor
Hm, das hört sich gut an. Nur habe ich gerade keine Vorstellung, wie ich das im detail mache.
Die Bean ist im Session Scope. Ich kann mir vorstellen, dass die JSF Seite die Bean mit den Formulardaten beschreibt. Aber wie kriege ich es hin, dass danach das Servlet angesprochen wird? Es wäre ja unschön, wenn ich erst das Servlet anspreche und über das Servlet die Bean befülle. Das wäre die unschönere Variante.
 

ms

Top Contributor
HLX hat gesagt.:
...dass das Servlet deine Managed-Bean verwurstet.
Verwursten, ist das ein ein Design-Pattern? :lol:

freez hat gesagt.:
Es wäre ja unschön, wenn ich erst das Servlet anspreche und über das Servlet die Bean befülle. Das wäre die unschönere Variante.
Warum ist das unschön?

Was macht denn das Programm genau?

ms
 

HLX

Top Contributor
freez hat gesagt.:
Hm, das hört sich gut an. Nur habe ich gerade keine Vorstellung, wie ich das im detail mache.
Die Bean ist im Session Scope. Ich kann mir vorstellen, dass die JSF Seite die Bean mit den Formulardaten beschreibt. Aber wie kriege ich es hin, dass danach das Servlet angesprochen wird?

Du registrierst zum Servlet ein URL-Pattern in der 'web.xml'. Über dieses kannst du dein Servlet ansprechen.

ms hat gesagt.:
Verwursten, ist das ein ein Design-Pattern?
Für einen Metzger schon. :D
 

freez

Top Contributor
Hm, danke schon mal für die Antworten.

Also, wie ich ein Servlet in der web.xml konfiguriere ist mir schon klar. Aber zuerst muss doch das facesServlet von der JSF Seite angesprochen werden, damit dieses automatisiert die bean(s) mit den Formulardaten befüllt. Daneben habe ich mein zweites Servlet, welches den Proxy gestartet hat. Nun sollen irgendwie die Daten von der Bean in das zweite, ich sage mal ProxyServlet dazu, transferiert werden, damit ich zur Laufzeit Daten in dem proxyDienst verändern kann oder auch abholen kann (Anzahl der Zugriffe, Auslastung usw.)

Mal konkret gefragt: Mein Servlet ist mit einem bestimmten Pattern in der web.xml registriert. Weiterhin habe ich noch das FacesServlet. Wie kann ich es nun anstellen, das zuerst meine SessionBean angesprochen wird und dann mein ProxyServlet um sich die Daten zu holen.

Oder ist mein ganzer Ansatz einfach verkehrt? Gibt es noch andere Möglichkeiten zwischen dem ProxyDienst und der SessionBean Daten auszutauschen? Im Endeffekt müssen die Daten ja sowieso noch in einer Datenbank gepflegt werden (einmal zur Speicherung der Konfiguration und für Logs). Aber ich habe auch da das problem, dass ich dem ProxyDienst sagen muss, dass es Änderungen an der Konfiguration gibt. Ich brauche ne einfache Schnittstelle zwischen den beiden Java Klassen Bean und ProxyDienst, egal, wo ich diesen Dienst laufen habe (im Tomcat oder separat im System)
 

HLX

Top Contributor
Also mir ist die Funktion des Proxy noch nicht ganz klar. Muss das Ding wirklich permant irgendwo im Hintergrund laufen?

Warum können die Methoden deines "Proxy" nicht direkt aus der JSF-Anwendung verwendet werden, sozusagen als BL deines Programms?
 

freez

Top Contributor
Hallo HLX

was ist denn BL?

Und ja, es muss permanent im Hintergrund laufen. Stelle dir ein HTTP Proxy vor. Der ist ja auch nicht nur ab und zu verfügbar. Den lässt du doch auch permanent laufen. Deinen Proxy kannst du über einfache Konfig Files konfigurieren. Diesen Zugang kann ich leider nicht bieten. Also brauche ich eine GUI, über die dieser Dienst konfigurierbar ist. Dies will ich mit JSF machen. Was ich mir gerne ausreden lasse, ist das ich den Dienst im Tomcat lasse. Rein aus dem Gefühl herraus gehört er nicht unbedingt dort rein. Aber mein Problem ist immer noch der Datenaustausch. Ich hoffe ja immernoch, das mir jemand ein schönes Stichwort nennt, welches mir bei der Suche im Web behilflich ist. Oder vielleicht hat ja jemand so etwas schon einmal gemacht.
 

ms

Top Contributor
freez hat gesagt.:
Businesslogik

Erklär doch bitte mal wie dein Proxy funktioniert.
Ist das ursprünglich ein eigenständiges Programm das auf einem Port lauscht?
Wie greift es derzeit auf die Konfiguration zu?
Und hast du die Möglichkeit das Programm zu verändern? Z.B. den Zugriff zur Konfiguration, wenn diese in einer
Datenbank liegen soll.

ms
 

freez

Top Contributor
Hallo ms,

danke für die Info.

Stellen wir uns einen einfachen HTTP Proxy vor, den ich selbst in Java entwickelt habe (es ist zwar kein HTTP Proxy, aber vom Prinzip her funktioniert es ähnlich). Die Konfiguration ist aktuell noch hart codiert im Programm soll aber später konfigurierbar sein. Ich selbst habe Zugriff auf alles. Aber der User später wird lediglich einen Browser haben und auf die Kiste per http zugreifen um Konfigurationen zu ändern. Weitere Zugriffe wie Filesystem und Datenbank werden von aussen nicht erlaubt. -> Deswegen JSF und Tomcat. Die Konfiguration kann in einem Textfile liegen oder auch in einer Datenbank (Wie auch die Logs). Da bin ich noch überzeugbar.

Also habe ich ein eigenständiges Programm, welches auf einem Port lauscht und Tomcat mit ein paar JSF Seiten. Wichtig ist mir der Punkt, dass relativ zeitnahe Daten von dem Programm in der JSF Seite angezeigt werden können. Und wenn ich Änderungen an der Konfiguration habe, sollen die natürlich sofort wirken.

Die große Frage ist nun, wie kann ich meine JSF Applikation und das Programm dazu bringen miteinander zu kommunizieren. Es wäre natürlich schön, wenn ich das so einfach wie es möglich ist implementieren könnte.
 

ms

Top Contributor
Also ich würde die Applikation um ein Steuerport erweitern. Lauscht also noch zusätzlich an einem Port um von der JSF-Anwendung über Konfigurationsänderungen benachrichtigt zu werden. Eventuell können auch darüber die von dir erwähnten Daten abgefragt werden.

Ich würde das Programm wohl eher eigenständig laufen lassen, also nicht im Tomcat.

ms
 

HLX

Top Contributor
Mir fällt zu deiner Beschreibung zunächst nur das Stichwort Web Services ein. Habe hier allerdings keine praktische Erfahrung.

Hier mal ein Link zu Web Services mit SOAP
 

freez

Top Contributor
Hallo HLX, Hallo ms,

beide Ideen sind mir heute auch gekommen. Allerdings scheint mir die implementierung eines eigenen Netzwerkprotokolls etwas umständlich zu sein.

Webservices habe ich mir heute auch angeschaut. Per WSDL habe ich auch schon ein paar Sachen ausprobiert, nur leider bis jetzt nur an kleinen Beispiel. Mir fehlt momentan noch die Information, wie ich mein Programm so gestallten kann, das es per Webservice erreichbar wäre. Also wo starte ich bei einem Webservice mein Programm, damit es auf einem Port zu lauschen beginnt?
 

freez

Top Contributor
Oh man. Manchmal sieht man die einfachsten Sachen nicht!

Ich habe meinen Proxy nun um folgenden Code erweitert:
Code:
private static Proxy proxy = null;
	
	public static Proxy getProxy() {
		return proxy;
	}

	public static void setProxy(Proxy proxy) {
		Proxy.proxy = proxy;
	}

und im Servlet mache ich beim init() ein:
Code:
Proxy p = new Proxy();
Proxy.setProxy(p);

und in der Bean hole ich ihn mir mit:
Code:
Proxy.getProxy()

Somit habe ich von der Bean direkten Zugriff auf meinen Proxy. das geht natürlich nur, solange es nur einen Proxy dieser Art gibt, bzw. es kein zweites Servlet gestartet wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Tomcat Application Path bestimmen Allgemeines EE 0
TheWhiteShadow JSF plugins für tomcat webapp Allgemeines EE 0
X Tomcat checkParachute Allgemeines EE 3
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
J Global JNDI Tomcat Allgemeines EE 0
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
C WebSocket in Tomcat wirft 404 Allgemeines EE 0
S Eclipse mit Tomcat und Jersey Allgemeines EE 7
S Fehlersuche in Eclipse/Tomcat -> Error-log?? Allgemeines EE 2
S Tomcat und 404 -> von jetzt auf gleich Allgemeines EE 4
L JNDI auf Tomcat mit EE Allgemeines EE 4
E Servlet Tomcat Method Signature Resolution Allgemeines EE 7
J Logging und Monitoring unter Tomcat Allgemeines EE 2
aze Tomcat:Error Pages werden nicht angezeigt Allgemeines EE 4
D JSF JSF 2.0 + ICEFaces + Tomcat 7 Allgemeines EE 3
R Sessionmanagement und Tomcat Allgemeines EE 6
W Tomcat Support mit SLA? Allgemeines EE 3
P Tomcat lädt falsche Datei obwohl richtig angegeben Allgemeines EE 11
N Tomcat funktioniert nach shutdown/startup nicht mehr korrekt Allgemeines EE 9
B Tomcat, JNDI und datasource - Konfiguartion Allgemeines EE 2
JimPanse Tomcat Fehler nach redeploy Allgemeines EE 5
A Java Tomcat findet Website nicht Allgemeines EE 8
S Anfängerfrage Eclipse/Tomcat Allgemeines EE 4
H Installer für Tomcat-Anwendung Allgemeines EE 5
A Tomcat in Eclipse Allgemeines EE 11
T Tomcat: Sessions bleiben zu lange erhalten Allgemeines EE 13
C Tomcat Zugriff auf lokale Dateien Allgemeines EE 2
A Tomcat, Exceptions beim redeploy Allgemeines EE 4
P Hilfe: Tomcat periodischer Absturz Allgemeines EE 5
MQue Tomcat reload Allgemeines EE 4
neurox Tomcat stoppen Allgemeines EE 1
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
MQue Tomcat PermGen Allgemeines EE 7
MQue Tomcat Methodenaufruf Allgemeines EE 3
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
MQue TCP- Verbindung nach Tomcat- Start (global) starten Allgemeines EE 4
reibi Tomcat Proxy eintragen Allgemeines EE 2
P CXF Project auf Tomcat laufen lassen - wie? Allgemeines EE 35
R (TOMCAT] Installation Tomcat auf WinXP Allgemeines EE 8
S Tomcat + Eclipse Allgemeines EE 6
T Security Manager in Tomcat Allgemeines EE 2
S Unterschiedliche Pfade bei Tomcat Allgemeines EE 4
ps EJB3 in Tomcat. das hat selbst mich erstaunt Allgemeines EE 18
B Tomcat Manager - .war Datei hochladen. Einfache Frage Allgemeines EE 5
G Probleme im Tomcat - loading WebappClassLoader Allgemeines EE 3
O ApplicationServer vs. Tomcat Allgemeines EE 5
G Verbindung zu Tomcat Allgemeines EE 15
B Tomcat -> Funktions User Credentials hinterlegen Allgemeines EE 7
B fmt:setBundle => Wo liegt die Properties-Datei im Tomcat? Allgemeines EE 3
U Tomcat Compilierproblem Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
M Gelegentlicher Absturz Tomcat Anwendung: PermGen Space Allgemeines EE 6
R Error ServletContextListener auf Tomcat 6 Allgemeines EE 2
Y myFaces 1.2 und Tomcat 5.x / 6.0 Allgemeines EE 9
S tomcat session timeout - und was danach? Allgemeines EE 1
A Tomcat startet nicht, Einstellungsfehler? Allgemeines EE 3
S Auf Datei ausserhalb des Tomcat zugreifen Allgemeines EE 4
S JSP / Tomcat / Eclipse / Unable to compile class for JSP Allgemeines EE 4
E JBoss mit existierendem Tomcat nutzen? Allgemeines EE 4
M JSP: Tomcat: Serverfehler 500 nur beim IE. Allgemeines EE 2
G JSF 1.2 unter Netbeans 6 mit Tomcat 6.0 ->Navigationsprob Allgemeines EE 6
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
L Tomcat Service mit JPDA debugging starten Allgemeines EE 2
J Tomcat: "Unable to get connection, DataSource invalid&q Allgemeines EE 8
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
F Tomcat: zentraler Class-Ordner? Allgemeines EE 2
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
N Zugriff auf Webapp nur für localhost definieren (Tomcat) Allgemeines EE 2
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
H Tomcat, MySQL Allgemeines EE 4
B tomcat verbergen Allgemeines EE 3
M classNotFoundexception vom tomcat Allgemeines EE 10
B Liferay + Tomcat Allgemeines EE 4
K tomcat: session-unabhängiges speichern Allgemeines EE 3
G Tomcat übersetzt nichts mehr Allgemeines EE 6
M tomcat beim booten mit starten Allgemeines EE 4
J Tomcat mit eigener Session-Implementierung Allgemeines EE 15
V tomcat 6 webserver oder was ist sein Sinn? Allgemeines EE 3
G eigener Tomcat-Connector f. propiet. Protokoll via TCP/IP Allgemeines EE 2
J wsdl-tomcat-AXIS Allgemeines EE 2
G Tomcat unter Eclipse starten Allgemeines EE 9
F Tomcat mit 128 MB Ram Allgemeines EE 9
C Unable to query Tomcat Manager: couldn't connect to host Allgemeines EE 2
A Cronjob mit Tomcat starten ? Allgemeines EE 4
B Connection Poll ohne TomCat Allgemeines EE 5
N Tomcat GWT-Anwendung - An beliebiger Stelle schreiben Allgemeines EE 2
E Tomcat Einstellungen Allgemeines EE 10
B Servlet-Api.jar auf JBoss? (Migration von Tomcat zu JBoss) Allgemeines EE 4
H Eine kurze Verständnisfrage zum Tomcat Allgemeines EE 2
S Hibernate, Tomcat und Eclipse treiben mich zum Wahnsinn. Allgemeines EE 2
F webanwendung läuft nicht auf Tomcat Allgemeines EE 2
M Tomcat, Hibernate, MySQL und die EOFException Allgemeines EE 7
Y Tomcat Thread-Handling Allgemeines EE 2
K Tomcat als Client nutzen Allgemeines EE 2
L Tomcat auf Windows Server 2003 Allgemeines EE 10
T Sysdeo Eclipse Tomcat Plug-in Allgemeines EE 4
H Tomcat in jbuilder mit startup.bat starten Allgemeines EE 5
P Tomcat Servlet POST Daten als Array Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben