Tomcat и контекстные пути - PullRequest
       17

Tomcat и контекстные пути

0 голосов
/ 07 января 2010

Я создал веб-приложение в Netbeans, и оно упаковывает приложение в файл с именем "aa-bb.war". Когда я запускаю проект в netbeans, я могу получить к нему доступ по адресу "localhost: 8080 / aa / bb". Это все хорошо.

Перемещение файла .war в стандартную установку Tomcat, однако, вызывает у меня проблемы. Когда я помещаю .war в каталог «webapp», он превращается в «webapp / aa-bb», но я действительно хочу «webapp / aa / bb» (обратите внимание на «-» против «/» между ними "aa" и "bb") ... так что bb должен находиться в подкаталоге "aa".

Мое понимание этого заключается в том, что tomcat использует имя файла .war для создания взорванного каталога, и, так как война называется "aa-bb", он, очевидно, использует дефис. Мой файл "context.xml" имеет правильный путь "aa / bb", но я читал, что Tomcat 5+ будет игнорировать путь контекста, указанный в .war, и вместо этого создаст путь на основе имени файла.

Как я могу заставить tomcat использовать подкаталог (это может показаться небольшой разницей в результирующем URL ("aa-bb" против "aa / bb"), но на самом деле это большая проблема по причинам, которые я выиграл не влезай прямо сейчас (просто все усложняет).

Ответы [ 2 ]

0 голосов
/ 07 января 2010

Какие у вас есть варианты? Я не знал, что Tomcat в последнее время игнорирует path="".

  1. Поместите apache вперед и используйте mod_redirect или mod_proxy для направления запросов на aa / bb в Apache на aa-bb в Tomcat.

  2. Используйте UrlRewriteFilter внутри веб-приложения, в зависимости от того, какую веб-среду вы используете (если есть?). Вызовите ваше веб-приложение aa.war, а затем попросите UrlRewriteFilter направить запросы на / bb / внутри приложения просто / вместо этого.

0 голосов
/ 07 января 2010

Стандартная структура развертывания tomcat заключается в том, что все приложения находятся на иерархии первого уровня. Любой файл context.war, который вы перетащите в папку с приложениями, в конечном итоге станет доступен через http://host/context. Я уверен, что вы не сможете принудительно указать подкаталог aa / bb, о котором вы упомянули, но вы можете обмануть реализацию следующим образом: (1 ) создание приложения aa.war, (2) создание в вашем aa-приложении каталога с именем bb, в котором есть все ваши jsps, и (3) если у вас есть сервлеты или фильтры, то также измените их отображение на bb / servlet.

...