2010-12-06 12 views
11

Wie man multiple Java-Web-Anwendung in Tomcat bereitstellen, die auf verschiedenen Ports laufen wird? - Wie Einstellungen vorgenommen werden, damit verschiedene Webanwendungen auf verschiedenen Ports ausgeführt werden können - Was muss alles getan werden, um dies zu erreichen?Wie man multiple Web-Anwendung in Tomcat bereitstellen, die auf verschiedenen Ports laufen wird?

+0

ein besonderer Grund, warum Sie verschiedene Ports benötigen? – JoseK

+0

http://stackoverflow.com/questions/8823290/how-to-run-diffterent-apps-on-single-tomcat-instance-behind-different-ports – sab

Antwort

4

Sie hätten besser mehrere Tomcat-Installationen. Es wäre einfacher.

Ich denke, Sie können mehrere <Connector> s in server.xml, und dann filtern Sie die Kontexte, aber das ist langweilig und klingt falsch.

+2

Ich möchte wissen, wie es auf einem Tomcat-Server nur tun ..Ich will nicht mehrere Server. – LetsSyncUp

+3

Was sind die Gründe für die Wahl dieser Option, anstatt mehrere Server zu haben? – Bozho

6

Sie müssen in Ihrer server.xml-Datei (tomcat_home/conf) einen anderen Dienst einrichten. Wenn Sie Ihren Server-Datei geändert haben, sollten Sie bereits ein Catalina genannt haben (ich bin mit Tomcat 5.5, können Sie etwas etwas anders, je nach Version haben)

<Service name="Dev2"> 
    <Connector port="8090" maxHttpHeaderSize="8192" 
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
       enableLookups="false" redirectPort="8443" acceptCount="100" 
       connectionTimeout="20000" disableUploadTimeout="true" /> 
    <Connector port="8092" 
       enableLookups="false" redirectPort="9443" protocol="AJP/1.3" /> 

    <Engine name="Dev2" defaultHost="MyDev"> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 
     <Host name="MyDev" appBase="webapps" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
     </Host> 
    </Engine> 
</Service> 

Beachten Sie, dass die Namen von Catalina nach Dev2 geändert haben, und localhost zu MyDev. Ändern Sie diese so, wie Sie für Ihre Anwendung geeignet erscheinen. Die Anschlüsse und Anschlüsse haben sich ebenfalls geändert. Sobald der neue Dienst eingerichtet ist, müssen Sie Anwendungen an den richtigen Dienst/Port bereitstellen. Sie erreichen dies unter XML-Dateien unter Verwendung (siehe Virtual Hosting)

Tomcat_Home/conf/Catalina/localhost/ 

und

Tomcat_Home/conf/Dev2/MyDev/ 

für die jeweiligen Ports, die Sie setzen

An diesem Punkt alles, was Sie tun müssen, ist hinzuzufügen, ein paar weitere Dateien, um den Dienst auf Ihre Anwendung zu verweisen. Als Beispiel unter Tomcat_Home/conf/Dev2/MyDev/ ich eine Datei Diese Datei enthält genannt Another.xml folgende

<Context path="/" docBase="C:/to_delete" debug="10" crossContext="false"> 
</Context> 

Jetzt kann ich die neue Anwendung Zugriff auf die Web-Adresse http://127.0.0.1:8090/Another Verwendung Wenn ich versuche, und Zugriff auf diese meine Standard-Port von 8080, erhalte ich einen Fehler, da die Anwendung für diesen gegebenen Port nicht bereitgestellt wurde.

Einige Dinge, die Sie über dieses Setup beachten sollten. Wenn Sie VirtualVM zum Anzeigen der Anwendung verwenden, werden Sie feststellen, dass sie dieselbe Prozess-ID verwenden. Daher müssen Sie besonders auf Ihre Ressourcen achten. Sie verwenden denselben Heap-Space und alle Threads werden in derselben Liste angezeigt. Wenn Sie sich bei Ihren Anwendungen angemeldet haben (z. B. Log4j), stellen Sie sicher, dass Sie eine Option haben, um anzuzeigen, welcher Thread die Arbeit erledigt hat, da es sonst schwer zu sagen ist, aus welchem ​​Port/welcher Anwendung diese stammen würde.

Wie Bozho bereits darauf hingewiesen hat, kann es einfacher sein, einfach zwei Tomcat-Instanzen anstelle eines Servers zu verwenden, der mehrere Ports überwacht.

4

Es tut uns leid, dies eine Antwort zu geben. Ich sehe für diese Frage keine Kommentarfunktion. Die Frage ist zu alt oder mein Ruf ist nicht hoch genug.

Allerdings habe ich die gleiche Frage selbst untersucht. Sie müssen viel mehr darüber wissen, wie Tomcat, HTTP-Server und die Java-Systemumgebung die gleiche Instanz verwenden. Ich habe gelesen, wo es auch sehr langsam ist.

Die beste Wette ist separate Instanzen.Es gibt zwei recht einfache Möglichkeiten, das zu tun: A/Für Ubuntu können Sie SVN verwenden dieses Skript zu erhalten: http://ubuntuforums.org/showthread.php?t=1211517 http://code.google.com/p/tomcat-linux/

B/Ihre eigenen, pro Benutzerinstanz. die besten Richtungen für mehr JVM-Instanzen für die neueste Tomcat unter Linux http://brian.pontarelli.com/2007/09/17/multiple-tomcat-instances-on-ubuntu/

Die letzten für Kater 5.5 geschrieben wurde, aber wahrscheinlich anpassbar an Tomcat 6

Allerdings sind hier: http://www.puschitz.com/InstallingTomcat.html

+0

Nun, der 'source' Befehl funktioniert nicht in Ubuntu in einer 'su' Umgebung. Plus, der 'puschitz.com' Link, den ich oben gesetzt habe, fordert ein 'Context' Element in die server.xml Datei. Ich habe einen funktionierenden Tomcat6 Server und es gibt keine server.xml Dateien auf meinem Computer mit diesem Element darin. Und aus diesen Gründen kann ich den puschitz.com-Ansatz nicht zum Laufen bringen. Also ziehe ich mich auf diesen Link zurück. Ich schaue mich immer noch selbst an. – Dennis

2

Sie können mod-proxy in apache verwenden, um den benutzerdefinierten Port auf den Standardport umzuleiten.

mod proxy

Verwandte Themen