Я пытаюсь изменить приложение по умолчанию веб-сервера Tomcat 6 на приложение, отличное от «ROOT» (внутри папки веб-приложений). Как лучше всего это сделать?
Как изменить приложение ROOT?
Ответы (13)
Есть три метода:
Сначала выключите свой Tomcat из его каталога
bin
(sh shutdown.sh
). Затем удалите все содержимое папки Tomcatwebapps
(rm -fr *
). Затем переименуйте файл WAR вROOT.war
и, наконец, запустите свой Tomcat из каталогаbin
(sh startup.sh
).- #P3# <блочная цитата> #P4# блочная цитата>
Поместите файл WAR вне
$CATALINA_BASE/webapps
(он должен быть снаружи, чтобы предотвратить двойное развертывание). Поместите файл контекста с именемROOT.xml
в$CATALINA_BASE/conf/
. Единственный элемент в этом файле контекста ДОЛЖЕН иметь атрибут docBase, указывающий на расположение вашего файла WAR. Элемент пути не должен быть установлен - он получен из имени файла.xml
, в данном случаеROOT.xml
. Дополнительные сведения см. в документации по контейнеру Context.
$CATALINA_BASE/conf/[enginename]/[hostname]
(который для моей довольно простой настройки — $CATALINA_HOME/conf/Catalina/localhost
). См. документацию по контейнеру контекста.
- person Michael Scheper; 14.06.2012
sudo systemctl start tomcatx
, где x
обозначает номер версии.
- person EarthMind; 19.06.2019
В Tomcat 7 с этими изменениями я могу получить доступ к myAPP
в /
и ROOT
в /ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
Добавьте выше в раздел <Host>
в server.xml
/ROOT
и пытаюсь войти на страницу менеджера, используя правильные учетные данные, мне отказывают в доступе. Вы знаете, как это исправить?
- person Saturnian; 27.07.2014
Добавление тега <Context>
в тег <Host>
в server.xml
для Tomcat 6 решит проблему.
Если вы используете пустой path=""
, вы можете использовать URL-адрес, например http://localhost/first.do
.
В теге контекста установите атрибуты docBase="E:\struts-ITRCbook\myStrutsbook"
и reloadable="true"
, затем завершите тег контекста.
Это должно выглядеть примерно так:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
</Context>
</Host>
Приложением ROOT по умолчанию обычно является Tomcat Manager, что может быть полезно, поэтому я решил сохранить его.
Таким образом, я сделал моё приложение ROOT и сохранил TCmgr.
переименовал ROOT во что-то другое
mv ROOT TCmgr
затем создал символическую ссылку, по которой ROOT указывает на приложение, которое я хочу сделать по умолчанию.
ln -s <your app> ROOT
работал для меня и казался самым простым подходом.
Согласно документам Apache Tomcat, вы можете изменить приложение, создав файл ROOT.xml. Смотрите это для получения дополнительной информации:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
«Веб-приложение по умолчанию может быть определено с помощью файла с именем ROOT.xml».
Вы можете сделать это немного хакерским способом:
- Остановить Томкэт
- Отодвиньте ROOT.war в сторону и rm -rf webapps/ROOT
- Скопируйте нужное веб-приложение в webapps/ROOT.war.
- Запустить Tomcat
Альтернативным решением было бы создать сервлет, который отправляет перенаправление на желаемое веб-приложение по умолчанию, и сопоставить этот сервлет со всеми URL-адресами в веб-приложении ROOT.
package com.example.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RedirectServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("/myRootWebapp");
}
}
Добавьте указанный выше класс в CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet
.
И добавьте следующее в CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml
:
<servlet>
<display-name>Redirect</display-name>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.example.servlet.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
И при желании вы можете легко изменить RedirectServlet, чтобы принять параметр инициализации, чтобы вы могли установить веб-приложение по умолчанию без необходимости изменять источник.
Я не уверен, что это будет иметь какие-либо негативные последствия, но я проверил это, и, похоже, это работает.
конфигурация context.xml у меня не сработала. Tomcat 6.0.29 жалуется на то, что docBase находится внутри appBase: ... Для Tomcat 5 это действительно сработало.
Поэтому одно из решений — поместить приложение в папку ROOT.
Другое очень простое решение — поместить index.jsp в ROOT, который перенаправляет в мое приложение следующим образом: response.sendRedirect("/MyApplicationXy");
С уважением, Ян
У меня возникла проблема при настройке Tomcat' server.xml
и добавлении элемента Context. Он просто не хочет использовать мою конфигурацию: http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
Если вы находитесь в системе Unix-like
:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Сделанный.
Работает на меня.
Окончательный способ изменить корневое приложение tomcat. Протестировано на Tomcat 7 и 8.
Перейдите в каталог веб-приложений tomcat:
Пример на моей машине:
~/stack/apache-tomcat/webapps
Переименуйте, замените или удалите папку ROOT. Мой совет - переименовать или создать копию для резервного копирования. Пример переименовать ROOT в RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Переместите военный файл с вашим приложением в каталог tomcat webapps (это каталог, в котором была старая папка ROOT, на моей машине: ~/stack/apache-tomcat/webapps)
Файл войны должен иметь имя ROOT.war. При необходимости переименуйте приложение: yourApplicationName.war -> ROOT.war.
- Перезапустите кота. После перезапуска ваше приложение станет корневым.
Я посмотрю на свои документы; есть способ указать конфигурацию, чтобы изменить путь корневого веб-приложения от ROOT (или ROOT.war), но, похоже, он изменился между Tomcat 5 и 6.
Нашел это:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html
Итак, кажется, что изменение корневого пути (в ROOT.xml) возможно, но немного неправильно — вам нужно переместить WAR за пределы каталога автоматического развертывания. Не возражаете, если я спрошу, почему простое переименование вашего файла в ROOT.war не является рабочим решением?
Не очень хорошее решение, но один из способов — перенаправить из приложения ROOT в YourWebApp. Для этого вам нужно изменить ROOT index.html.
<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location='YourWebApp';">
</body>
</html>
OR
<html>
<head>
<title>Redirecting to /YourWebApp</title>
<meta http-equiv="refresh" content="0;url=YourWebApp" />
</head>
<body>
</body>
</html>
Ссылка: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
В Tomcat 7 (под сервером Windows) я ничего не добавлял и не редактировал ни в один файл конфигурации. Я просто переименовал папку ROOT во что-то другое и переименовал папку моего приложения в ROOT, и все заработало нормально.