wdrażanie wielu aplikacji do programu Tomcat

Chcę wdrożyć dwie aplikacje foo.war i bar.war do tej samej instancji Tomcat. Czy jest możliwe, aby nasłuchiwali połączeń na różnych portach, np. foo nasłuchuje na porcie 81 i bar nasłuchuje na porcie 82? Jeśli tak, jak Mogę to skonfigurować? Zdaję sobie sprawę, że aplikacje nie muszą słuchać na różnych portach, ale to jest to, co chcę osiągnąć.

Również, czy mam rację mówiąc, że jeśli zmienię nazwę foo.war na ROOT.war tak, że działa w kontekście głównym, to wszystkie żądania aby ta instancja Tomcat będzie obsługiwana przez aplikację foo i dlatego bar musiałby być wdrożony do oddzielnej instancji Tomcat?

 27
Author: Dónal, 2014-05-09

4 answers

Jeśli chcesz, aby Tomcat nasłuchiwał wielu portów, musisz skonfigurować złącze dla każdego portu. Aby zmapować każdy port do innej aplikacji, musisz owinąć każdy z konektorów w usługę i utworzyć host z własnym appBase.

Przykład definicji usługi w server.xml:

<Service name="foo">
    <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" />
    <Engine name="Catalina80" defaultHost="localhost">
        <Host name="localhost" appBase="foo" unpackWARs="true" autoDeploy="true" />
    </Engine>
</Service>

<Service name="bar">
    <Connector port="81" protocol="org.apache.coyote.http11.Http11NioProtocol" />
    <Engine name="Catalina81" defaultHost="localhost">
        <Host name="localhost" appBase="bar" unpackWARs="true" autoDeploy="true" />
    </Engine>
</Service>

Zamiast upuszczać pliki war w katalogu webapps, należy utworzyć katalog foo dla portu 80 i bar dla portu 81. Imię i nazwisko war files ROOT.war i wrzucić je do ich własnego katalogu bazowego. Możesz oczywiście mieć wiele aplikacji w każdym katalogu, jeśli potrzebujesz.

Katalog zdefiniowany w {[1] } jest względem katalogu tomcat. Używając ścieżki bezwzględnej, może ona znajdować się w dowolnym miejscu w systemie. Z dokumentacji :

AppBase

Katalog baza aplikacji dla tego wirtualnego hosta. Jest to ścieżka do katalogu, który może zawierać web aplikacje do wdrożenia na tym wirtualnym hoście. Możesz określić bezwzględną nazwę ścieżki lub ścieżkę względną do katalogu $CATALINA_BASE. [...] Jeśli nie podano, zostanie użyta wartość domyślna webapps.

Inną opcją jest zachowanie domyślnej konfiguracji tomcat i użycie innego serwera http (apache, nginx, lighttpd,...) mapowania portu do wewnętrznej ścieżki aplikacji tomcat.

Aplikacja root nie otrzyma żądań pasujących do innych aplikacji, np. /foo/example pójdzie do foo.war, /example/example przejdzie do ROOT.war.

 56
Author: kapex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-07 17:22:47

Nie trzeba zmieniać portów

[2]}żonglowanie wieloma przychodzącymi żądaniami i wychodzącymi odpowiedziami wielu użytkowników przy użyciu dowolnej z wielu uruchomionych aplikacji internetowych jest celem technologii Java Servlet. Cały ten ruch może być obsługiwany na jednym porcie.

Po prostu upuść oba pliki wojenne do folderu Webapps Tomcat. To wszystko, co musisz zrobić.

Domyślnie Tomcat rozszerza ("eksploduje" niektórzy mówią) każdą wojnę (technicznie plik zip) do folderu i automatycznie wdraża aplikację dla ty. Dzieje się tak w locie, jeśli program Tomcat jest już uruchomiony lub podczas uruchamiania programu Tomcat. Niektóre osoby wyłączają funkcję automatycznego wdrażania do produkcji, aby zapisać Tomcat pracę skanowania w poszukiwaniu nowych plików wojennych.

Nie ma potrzeby stosowania wielu portów. Zadaniem kontenera Servleta jest sprawdzenie adresu URL i określenie, który Servlet powinien zostać wywołany.

Domyślnie nazwa pliku war określa adres URL. Podany przykład:

Wszystkie aplikacje internetowe mogą być obsługiwane na tym samym porcie. Twój jedyny problem z portami jest jeśli używasz systemu operacyjnego w stylu Unix, który chroni dostęp do portów o niskiej numeracji. Dotyczy to Systemów Mac OS X, BSD, Linux i Solaris. W tym celu należy użyć adresu URL o wysokim numerze (domyślnie 8080) lub użyć przekierowanie portów wysyłanie żądań przychodzących na porcie 80 (domyślnie przeglądarki internetowe) do portu Tomcat (np.

Jeśli chcesz, aby pliki wojenne były obsługiwane przy użyciu różnych domen, zapoznaj się z ustawieniami" virtual host " w Tomcat.

 22
Author: Basil Bourque,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-30 17:04:49

Pomyślnie skonfigurowałem Tomcat do uruchamiania aplikacji na wielu portach. Nie wiem, czy jest to najlepszy sposób, aby to zrobić, ale po prostu skopiowałem zawartość

<Service>...</Service>

W conf / server.xml i zmieniono porty dla znaczników Connector i zmieniono atrybut appBase tagu Host . Możesz kontrolować, na którym porcie działa Twoja aplikacja, na podstawie bazy appBase , do której została wdrożona.

 4
Author: Jeff Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-12 13:39:20

Już robiłam to, o czym wspomina Basil.

Jak sie okazalo potrzebowalem dodac dziurki do moich stron-włączonych / bla.plik conf, aby nie odwoływać się do pierwszego (i tylko) .war i został wdrożony kilka miesięcy przed dodaniem kolejnej aplikacji.

Oto co zrobiłem:

  • DocumentRoot
  • JkMount
  • Katalog
  • DirectoryIndex
Tak dla twojej wiadomości. :)
 0
Author: Mr. Butterworth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-06 23:35:15