Два коннектора в файле tomcat server.xml

У меня есть два веб-приложения, которые я хочу запустить под одним экземпляром tomcat, но на разных портах для подключения, например первое war — под 8080, а второе — 8090. Можно ли обойтись всего двумя коннекторами в сервер.xml?

Итак, для подключения к первому приложению я буду использовать адрес http://localhost:8080/myFirstApp, а для второго - http://localhost:8090/mySecondApp. Как я могу сделать это, не запуская два экземпляра tomcat на локальном хосте?


person javagirl    schedule 30.11.2011    source источник


Ответы (3)


Ну я думаю можно объявить два коннектора разными портами и они будут нормально работать. Но вы не можете ограничить доступ к приложениям через конфигурацию. То есть оба приложения будут доступны на обоих портах. Если вам нужно ограничить это, сделайте Filter, который проверяет и возвращает 404.

person Bozho    schedule 30.11.2011
comment
спасибо, на самом деле мне не нужно ограничение. Я просто хочу ограничить пул потоков для каждого приложения, которое не будет использоваться совместно. так что, если одно приложение очень занято и не имеет свободных потоков в пуле - другое приложение будет по-прежнему доступно через другой порт - поскольку пулы потоков должны быть разными и не использоваться совместно для diff-коннекторов, верно? - person javagirl; 30.11.2011
comment
Думаю, да. Но вы также можете иметь пулы потоков в приложении, которые не являются общими. Я бы не стал делать коннектор только ради пулов потоков - person Bozho; 01.12.2011
comment
почему, что плохого в наличии двух и более разъемов? - person javagirl; 01.12.2011
comment
ничего, но вы не должны использовать их по неправильной причине. Если причина в пулах соединений - есть решения получше. - person Bozho; 01.12.2011
comment
наличие двух экземпляров? или даже размещение их на разных физических серверах? одно приложение вызывает другое, и если слишком много вызовов для первого приложения - и нет ни одного свободного потока - второе приложение не будет отвечать, и у нас есть классический тупик, потому что первое приложение также ждет - ожидание ответа от второго приложения - person javagirl; 01.12.2011
comment
как я уже сказал, вы можете иметь пулы для каждого веб-приложения. Вам просто нужно будет инициализировать и управлять им самостоятельно. Или используйте Spring, который управляет этим для вас, например. - person Bozho; 01.12.2011
comment
зачем мне создавать еще один пул, если у меня уже есть базовый системный, который делает все, что мне нужно? созданные вручную внутренние пулы - это не то, что я ищу - person javagirl; 01.12.2011
comment
Зачем? Это куда лучший вариант. Например, tomcat использует commons-dbcp, а вы можете использовать более продвинутый c3p0. И вы можете иметь это, не принимая искусственных мер, таких как несколько разъемов. - person Bozho; 01.12.2011
comment
На самом деле это неправда. Этого можно добиться: mulesoft.com/tomcat-connector см. Вложенные элементы соединителя< /б> - person Vlad Minaev; 29.05.2013

Нет проблем с запуском двух разъемов.

Но если вы хотите, чтобы каждое приложение было доступно на другом порту и только там (не на обоих/всех портах), скопируйте часть службы в conf/server.xml, изменив порты и имена, чтобы не было конфликта.

Вам нужно будет указать разные каталоги веб-приложений для обеих служб и поместить каждое из ваших веб-приложений в разные каталоги.

person soulcheck    schedule 30.11.2011

http://www.mulesoft.com/tomcat-connector

Теперь давайте предположим, что мы хотим изменить эту конфигурацию, чтобы вместо получения двух ответов на каждый запрос, полученный любым соединителем, мы хотели, чтобы каждый соединитель передавал запросы со своего порта только в одно конкретное веб-приложение. Чтобы добиться этой функциональности, нам просто нужно изменить иерархию элементов, чтобы она выглядела примерно так:

<Server>
  <Service name="Catalina">
    <Connector port="8443"/>
    <Engine>
       <Host name="yourhostname">
          <Context path="/webapp1"/>
       </Host>
    </Engine>
  </Service>
  <Service name="Catalina8444">
    <Connector port="8444"/>
    <Engine>
       <Host name="yourhostname">
          <Context path="/webapp2"/>
       </Host>
    </Engine>
  </Service>
</Server>
person Vlad Minaev    schedule 29.05.2013