Чтобы установить свой контекстный путь на "/"
, вам нужно использовать развертывание контекста.
Примечание: Вы ДОЛЖНЫ указать строку пути к контексту для целей отображения спецификации пути. Пустая строка пути к контексту ""
действительна только в качестве результата сопоставления запросов к корню контекста. См. Раздел 12.2 спецификации сервлета)
В Jetty 7.x назначение пути к контексту обрабатывается поставщиками приложений, назначенными для DeploymentManager.
По умолчанию в Jetty Distribution, оба , WebAppProvider и ContextProvider включены. Это важно знать позже, так как это повлияет на ваши решения о том, куда поместить файл mywebapp.war.
Посмотрите файл ${jetty.home}/start.ini
, и вы увидите, что он содержит обе ссылки на etc/jetty-webapps.xml
и etc/jetty-contexts.xml
Роль WebAppProvider заключается в том, чтобы обращать внимание на каталог ${jetty.home}/webapps/
для любых развертываемых приложений (например, * .war) и развертывать их в контексте с тем же именем, что и имя файла. Другими словами, ${jetty.home}/webapps/MyApp-2.4.war
развернут в контексте "/MyApp-2.4"
. Существует также специальное зарезервированное слово «root.war», которое будет развернуто в контексте "/"
. Хотя это самый простой механизм развертывания, он жертвует контролем над особенностями развертывания.
Роль ContextProvider - обращать внимание на каталог ${jetty.home}/contexts/
для любых развертываемых контекстов, отформатированных в jetty-xml. Этот механизм развертывания дает вам максимальный контроль над развертыванием, xml-файл может контролировать все, что в конечном итоге разрешено в org.eclipse.jetty.server.handler.ContextHandler базовый класс, из которых WebAppContext (войны / сервлеты / и т. Д.) Являются частью.
Наиболее распространенное использование - указать xml-файл на основе WebAppContext и управлять такими вещами, как, например, какие файлы и каталоги составляют веб-приложение, какой временный каталог использовать и даже какой контекстный путь использовать.
То, что вы хотите сделать, это:
- Убедитесь, что развертывания на основе ContextProvider включены в файле start.ini (убедитесь, что присутствует
etc/jetty-context.xml
)
- Создайте
${jetty.home}/contexts/mywebapp.xml
, который объявляет опцию <Set name="contextPath">/</Set>
.
- Если у вас есть
etc/jetty-webapps.xml
в вашем файле start.ini, не не помещайте ваш mywebapp.war в ${jetty.home}/webapps
, так как это приведет к тому, что WebAppProvider также развернет то же самое веб-приложение, и запутает ваше развертывание. .
Наконец, вы можете увидеть, как это делается в самом дистрибутиве пристани , просто откройте ${jetty.home}/contexts/test.xml
и осмотрите его. Вы увидите, что он загружает ${jetty.home}/webapps/test.war
через использование ContextProvider ${jetty.home}/contexts/test.xml
в контекстный путь "/"
.
Еще одна заметка, посмотрите журналы.
2012-01-13 13: 56: 28.779: ИНФОРМАЦИЯ: oejsh.ContextHandler: запущен oejwWebAppContext {/, файл: /tmp/jetty-0.0.0.0-8080-test.war -_- any- / webapp / } / дома / Йоаким / код / пристань / дистрибутивы / причал-распределение-7.6.0.RC3 / WebApps / test.war
Это говорит мне, что WebAppContext был
- Начато с
{/,
(корневой контекстный путь)
- Использование каталога temp / work
file:/tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp/
- Использование веб-приложения, указанного в
/home/joakim/code/jetty/distros/jetty-distribution-7.6.0.RC3/webapps/test.war
.
Обновление: уточнение утверждения о пустом пути к контексту.