Как развернуть несколько веб-приложений в tomcat, которые будут работать на разных портах?

Как развернуть несколько веб-приложений java в tomcat, которые будут работать на разных портах? - Как выполнить настройки, чтобы различные веб-приложения выполнялись на разных портах. Что нужно сделать для достижения этого?

Ответ 1

Вам необходимо настроить другую службу в файле server.xml(tomcat_home/conf). Если вы не изменили файл своего сервера, у вас уже должен быть один с именем Catalina (я использую Tomcat 5.5, у вас может быть что-то немного отличающееся в зависимости от версии)

<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>

Обратите внимание, что имена были изменены с Catalina на Dev2, а localhost - на MyDev. Измените их на все, что вам подходит для вашего приложения. Также изменились порты и разъемы. После установки новой службы вам необходимо развернуть приложения на соответствующий Service/Port. Вы достигаете этого, используя файлы XML в разделе (Виртуальный хостинг)

Tomcat_Home/conf/Catalina/localhost/

и

Tomcat_Home/conf/Dev2/MyDev/

для соответствующих портов, которые вы настраиваете

В этот момент все, что вам нужно сделать, это добавить еще несколько файлов, чтобы указать Сервис в ваше приложение. В качестве примера под Tomcat_Home/conf/Dev2/MyDev/ у меня есть файл Another.xml. Этот файл содержит следующие

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

Теперь я могу получить доступ к новому приложению, используя веб-адрес http://127.0.0.1:8090/Another Если я попытаюсь получить доступ к этому, используя мой порт по умолчанию 8080, я получаю сообщение об ошибке, поскольку приложение не было развернуто для данного порта.

Несколько вещей, чтобы отметить эту настройку. Если вы используете VirtualVM для просмотра приложения, вы заметите, что они имеют один и тот же идентификатор процесса. Поэтому вы должны быть осторожны с вашими ресурсами. Они будут использовать одно и то же пространство кучи, и все потоки будут отображаться в том же списке. Если вы регистрируетесь в своих приложениях (например, Log4j), убедитесь, что у вас есть опция, показывающая, какой поток выполняет эту работу, так как может быть сложно сказать, какой порт/приложение будет использовать это.

Как уже указывал Божо, может быть проще просто запустить два экземпляра Tomcat вместо одного сервера, прослушивающего несколько портов.

Ответ 2

Вам лучше иметь несколько установок tomcat. Было бы проще.

Я думаю, вы можете зарегистрировать несколько <Connector> в server.xml, а затем отфильтровать контексты, но это утомительно и звучит неправильно.

Ответ 3

Извините, что ответили. Я не вижу возможности комментировать меня по этому вопросу. Mabye вопрос слишком стар, или моя репутация недостаточно высока.

Тем не менее, я сам сам занимался этим вопросом. Вам нужно будет узнать намного больше о том, как Tomcat, http-серверы и системная среда Java используют один и тот же экземпляр. Я читал, где он тоже очень медленный.

Лучшая ставка - это отдельные экземпляры. Есть два довольно простых способа сделать это: A/Для Ubuntu вы можете использовать SVN для получения этого script:    http://ubuntuforums.org/showthread.php?t=1211517   http://code.google.com/p/tomcat-linux/

B/Ваш собственный экземпляр пользователя.    http://brian.pontarelli.com/2007/09/17/multiple-tomcat-instances-on-ubuntu/

Последний был написан для tomcat 5.5, но, вероятно, адаптирован к Tomcat 6

Однако лучшие направления для нескольких экземпляров JVM для последней версии Tomcat на Linux: http://www.puschitz.com/InstallingTomcat.html

Ответ 4

Вы можете использовать mod-proxy в apache для перенаправления настраиваемого порта на стандартный.

mod proxy