Tomcat socket Connection

  • Themenstarter Themenstarter Gast2
  • Beginndatum Beginndatum
G

Gast2

Gast
Hi,

ich habe hier einen Tomcat in dem mehrere Applications mit mehreren Servlets laufen.

Das ist soweit auch alles ganz super - wenn ich auf server😛ort1/appA/service1 zugreife wird der Request mit Service1Servlet in der Application "appA" bearbeitet, bei server😛ort1/appB/service2 halt mit Service2Servlet in Application "appA" und bei server😛ort1/appB/service1 im Service1Servelt in "appB".

Jetzt möchte ich noch die Möglichkeit einbauen auch einfach einen Socket auf server😛ort2 aufzumachen und dann z.B. den Request in "appA" mit Service3Servlet zu akzeptieren.

Ist das möglich, irgendwie finde ich mit "tomcat socket connection" alles mögliche aber nicht was ich möchte 😉

Also - kann ich einen Connector auf einen Port konfigurieren und dann auf einen context/servlet mappen?

Vielen Dank,
fassy
 
Hört sich seltsam an.

Was willst du denn eigentlich erreichen? Zwei getrennte Applikationen auf einem Tomcat deployen? Dafür braucht man keine zwei Connector-Konfigurationen...
 
Nein, nicht wirklich.

Ich habe einen Tomcat mit einem Haufen an Applicationen die alle in einem eigenen Contexten laufen.

Jede Application bietet Services an - und für jede Serviceausprägung gibt es ein Servlet.

Sprich z.B. Servlet1 bearbeitet HTTP SOAP Requests auf /context/soap, Servlet2 HTTP REST Requests auf /context/rest und z.B. ein Servlet3 ein propriäteres message format über HTTP auf context/plain

Um als Client jetzt einen Request zu machen wird aber in jedem Fall ein HTTP Request an den Tomcat geschickt. Ich möchte jetzt aber auch inder Lage sein pure TCP Socketclients zu bedienen. Also Clientcode so in der Art:

Java:
			socket.connect(new InetSocketAddress(config.getServer(),
					config.getPort()), config
					.getConnectTimeout());

//..
			serverRequest = new PrintWriter(new BufferedWriter(
					new OutputStreamWriter(socket.getOutputStream(), STREAM_ENCODING)));
			serverResponse = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String response = null;
			// send message
			serverRequest.print(request);

			StringBuffer responseString = new StringBuffer();
			char[] responseBuf = new char[RESPONSE_READ_BUFFER_SIZE];
			boolean receive = true;

			while (receive) {
				int received = serverResponse.read(responseBuf);

//...

Kurzfristige eklige Lösung ist in der Webapp einen netty auf einem anderen Port zu starten. Aber das ist irgendwie auch nicht schön. Das muss doch auch irgendwie so gehn.

Natürlich könnte ich auch die Socketapp standalone mit dem netty laufen lassen aber dann muss ich den ganzen quatsch wie database connection pooling usw auch wieder reinstricken.
 
Prinzipiell solltest du für den Tomcat einen eigenen Connector schreiben, der den neuen Port und das passende Protokoll bedient. Alles andere wäre Pfusch.
 

Neue Themen


Zurück
Oben