У нас есть интернет-приложение под названием X, которое заменяется новым приложением под названием Y.
Мы используем экземпляры Tomcat, обслуживаемые Apache, для обслуживания X и Y с обменом данными через mod_jk. Один Tomcat размещает X, а другой - Y.
X и Y были установлены на наших производственных серверах - X используется нашими клиентами, а Y проходит финальное тестирование:
JkMount /x loadbalancer-x
JkMount /x/* loadbalancer-x
JkMount /y loadbalancer-y
JkMount /y/* loadbalancer-y
(давайте проигнорируем аспект безопасности через неясность!)
Когда придет время для Y перейти в производство, есть ли способ сопоставить старый URL-адрес новому приложению, чтобы www.mysite.com/x
будет указывать на новое приложение вместо старого.
Это сработало бы, если бы на loadbalancer-y было развернуто приложение с именем x. В том-то и проблема - у нового приложения другое имя, но начальство хочет, чтобы URL остался прежним. Я пытаюсь найти способ сообщить JKMount запросить приложение Y, когда URL-адрес X нас запросил.
Это причина, по которой Context
элемент существует.
Указывая /x
Префикс URL для нового воркера loadbalancer-y
:
JkMount /x loadbalancer-y
Предполагая, что имя нового приложения newname
, создать Context
в твоем <Host>
элемент, примерно так:
<Host name="your.domain.name" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/x" docBase="newname"/>
</Host>
Просто указывая JkMount /x loadbalancer-y
не сработает?
Вместо того, чтобы глобально использовать JkMount, почему бы не создать запись каталога / x в httpd и просто JkMount loadbalancer-y, а затем указать loadbalancer-y на фактическое приложение, а не на корень tomcat.