Подтвердить что ты не робот

Tomcat: два контекстных пути для одного webapp

Проблема заключается в следующем: У меня есть веб-приложение, и это веб-приложение развертывается в каталоге $TOMCAT_HOME/webapps/XXX. Я могу достичь этого по адресу http://localhost:8080/XXX НО, я хотел бы обратиться в веб-приложение на адрес http://localhost:8080/YYY. Я добавил следующее на server.xml:

<Server>
    <Service>
        <Engine>
            <Host>
                .......
                <Context path="/YYY" docBase="XXX"></Context>
            </Host>
        </Engine>
    </Service>
</Server>

Это помогло, но Tomcat начал два веб-контекста, и это вызвало некоторые другие проблемы. Возможно ли создать "множественный" адрес для одного веб-приложения?

4b9b3361

Ответ 1

URL-адрес веб-приложения разбивается следующим образом:

ПРОТОКОЛ://DOMAIN: PORT/КОНТЕКСТ/ИмяСтраницы

Решения для одного приложения на двух разных адресах следующие:

  • Если вы хотите отличаться только протоколом (скажем, между http и https), то просто есть 2 коннектора в server.xml.

  • если вы хотите отличаться по имени DOMAIN, тогда это будет разрешено на уровне DNS.

  • Если вы хотите отличаться в имени контекста (имя веб-приложения), вы должны поставить apache впереди (mod_proxy или mod_ajp), а затем создать правило перезаписи (mod_rewrite). допустим, переписать все из /a/* и /b/* в /c/*

  • Если вы хотите отличаться в названии страницы, вы должны использовать сопоставления сервлета.

Поставить apache перед tomcat через mod_proxy очень просто, в Интернете есть несколько ресурсов. Очень плохо было бы дублировать приложения (все загрузилось дважды).

Что касается вашего вопроса, я бы посоветовал повторить дублирование в server.xml.

<Context docBase="myapp" path="/address1" reloadable="true" />
<Context docBase="myapp" path="/address2" reloadable="true" />

Это убийца для памяти, а также для механизмов сеанса, согласованности и т.д.

Ответ 2

Попробуйте использовать атрибут crossContext:

<Context path="/YYY" docBase="XXX" crossContext="true"></Context>