Я использую tomcat 6.0, и у меня возникли проблемы с его настройкой на то, что я хочу ...
У меня есть два веб-приложения, назовите их X и Y, развернутые как X.war и Y.war. У каждого есть сервлет под названием blah.
Так что я могу получить к ним доступ так: http: // сервер / X / бла http: // server / Y / blah
Я хочу представить, что они представляют собой одно веб-приложение Z, и уметь это делать:
http: // сервер / Z / X / бла -> как будто я пошел в http: // сервер / X / бла
http: // server / Z / Y / blah -> как будто я пошел http: // server / Y / blah
Поэтому я изменил (catalina_home) /conf/Catalina/localhost/X.xml следующим образом: <context override = "true" path = "/ Z / X" reloadable = "false">
Однако это не сработало; когда собираешься http: // сервер / Z / X / бла Я получаю сообщение «Запрошенный ресурс (/ Z / X / blah) недоступен».
Где я ошибаюсь?
Альтернативный способ сделать это - настроить tomcat за apache через ajp. Затем используйте mod_proxy_ajp для сопоставления http: // сервер / Z / вместо этого на ajp: // server /.
Если вы добавите Context
в пределах server.xml
он будет работать как хотите.
<Context docBase="x" path="/z/x" reloadable="true" />
Этот подход не рекомендуется в документации Tomcat, поскольку любые изменения в server.xml
означает перезапуск сервера, нарушающий работу всех веб-приложений.
Но, с другой стороны, практика держать это так, как вы хотите, в Catalina_Home/conf/Catalina/localhost/context.xml
имеет некоторые ненадежности, как сообщали другие.
Видеть https://stackoverflow.com/questions/4032773/why-does-tomcat-replace-context-xml-on-redeploy и