2 Stimmen

Können Sie einen zusätzlichen Einstiegspunkt zu Servlet-Webanwendungen hinzufügen?

Stellen Sie sich vor, Sie haben eine standardmäßige Java-Web-App, die einfache Servlets oder SpringMVC oder ähnliches verwendet. Sie möchten auch (aus welchem Grund auch immer) eine Möglichkeit haben, mit dem Server zu kommunizieren, ohne HTTP zu verwenden - ich werde direkte Sockets verwenden, da dies das einfachste Beispiel ist, das mir einfällt.

Das Schreiben einer Web-App ist einfach, Sie haben Servlets als Einstiegspunkte. Das Schreiben einer Java-App, die Ports überwacht, ist auch ziemlich einfach. Aber was ist mit einer App, die beides tut? Ist das ohne Hacking erlaubt? Und wenn sich herausstellt, dass wir damit einverstanden sind, dass dies eine schlechte Idee ist, was ist eine bessere Architektur? Beachten Sie, dass eine der Motivationen hinter diesem Ansatz die Leistung ist... Wir könnten leicht zwei separate Apps haben, die eine DB teilen, aber es bevorzugen, die DB nicht als Kommunikationstool zu verwenden, wenn Informationen viel effizienter im Speicher zwischengespeichert werden könnten.

2voto

Sean Owen Punkte 64909

Also nehme ich an, dass ein Java EE-Container im Spiel ist, wie z.B. Tomcat. Wenn Sie möchten, dass er auf einem anderen Port als dem Standardport 80 oder zusätzlich dazu hört, ist das möglich. Sie würden einen neuen Connector in der Datei server.xml erstellen, im Fall von Tomcat, und den gewünschten Port angeben.

Wenn Sie möchten, dass dieser Connector ein benutzerdefiniertes Protokoll spricht, müssen Sie Ihren eigenen benutzerdefinierten Connector implementieren und registrieren. Ich habe es nicht gemacht, aber es scheint einfach zu sein.

Wenn Sie im Wesentlichen dieselben Anfragen über zwei Protokolle beantworten, macht es Sinn, einen Server mit verschiedenen Endpunkten zu verwenden. Ich stelle mir vor, dass es einfacher ist, all diese gemeinsame Logik zu teilen.

Auch wenn Sie eine separate Anwendung ausführen möchten, lohnt es sich wahrscheinlich, auf diese Weise vorzugehen, da Sie von der Verwaltung der Verbindungen und dergleichen durch den Container profitieren werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X