답변:
세 가지 방법이 있습니다.
먼저 해당 bin
디렉토리 ( sh shutdown.sh
) 에서 Tomcat을 종료하십시오 . 그런 다음 Tomcat webapps
폴더 의 모든 내용을 삭제하십시오 ( rm -fr *
). 그런 다음 WAR 파일의 이름을로 바꾸고 ROOT.war
마지막으로 bin
디렉토리 ( sh startup.sh
) 에서 Tomcat을 시작하십시오 .
전쟁 파일을 $CATALINA_BASE/webapps
원래 이름으로 두십시오 . 해제
autoDeploy 및 deployOnStartup을 에 호스트 요소에 server.xml
파일. 경로
및 docBase 속성을 server.xml
모두 지정하여의 모든 애플리케이션 컨텍스트를 명시 적으로 정의하십시오 . 모든 Tomcat 자동 배포 메커니즘을 비활성화했기 때문에이 작업을 수행해야합니다. Tomcat은에서 컨텍스트를 찾지 않으면 더 이상 애플리케이션을 배포하지 않습니다 .server.xml
두 번째 방법 : 응용 프로그램을 변경하려면 Tomcat을 중지했다가 다시 시작해야합니다.
WAR 파일을 외부에 두십시오 $CATALINA_BASE/webapps
(이중 배치를 방지하려면 외부에 있어야 함). 에 이름이 지정된 컨텍스트 파일 ROOT.xml
을 배치하십시오 $CATALINA_BASE/conf/
. 이 컨텍스트 파일의 단일 요소에는 WAR 파일의 위치를 가리키는 docBase 속성 이 있어야
합니다. 경로 요소는 설정하지 않아야합니다 . .xml
이 경우 파일 이름에서 파생됩니다 ROOT.xml
. 자세한 내용은 컨텍스트 컨테이너 설명서를 참조 하십시오.
$CATALINA_BASE/conf/[enginename]/[hostname]
디렉토리 에 배치하면 작동합니다 (기본 설정은 $CATALINA_HOME/conf/Catalina/localhost
). 컨텍스트 컨테이너 문서를 참조하십시오 .
sudo systemctl start tomcatx
곳x
Tomcat 6 <Context>
의 <Host>
태그에 태그를 추가 server.xml
하면 문제가 해결됩니다.
당신이 사용하는 경우 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>
이러한 변경 사항이있는 Tomcat 7에서는 myAPP
at /
and ROOT
at 에 액세스 할 수 있습니다 ./ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
<Host>
server.xml 의 섹션에 위의 추가
/ROOT
올바른 자격 증명을 사용하여 Manager 페이지에 로그인하려고하면 액세스가 거부됩니다. 이 문제를 해결하는 방법을 알고 있습니까?
루트 기본 응용 프로그램은 일반적으로 Tomcat Manager입니다.
그래서 내 앱을 루트로 만들고 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 웹 애플리케이션의 모든 URL에 맵핑하는 서블릿을 작성하는 것입니다.
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>
원하는 경우 소스를 수정하지 않고도 기본 webapp를 설정할 수 있도록 초기화 매개 변수를 허용하도록 RedirectServlet을 쉽게 수정할 수 있습니다.
이 작업을 수행하는 데 부정적인 영향이 있는지 확실하지 않지만 테스트 한 결과 작동하는 것 같습니다.
Tomcat을 구성 server.xml
하고 컨텍스트 요소를 추가 할 때 문제가 있습니다 . 그는 내 구성을 사용하고 싶지 않습니다 :
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 7 및 8에서 테스트되었습니다.
tomcat webapps 디렉토리로 이동하십시오.
내 컴퓨터의 예 : ~/stack/apache-tomcat/webapps
ROOT 폴더의 이름을 바꾸거나 바꾸거나 삭제하십시오. 내 조언은 이름을 바꾸거나 백업 사본을 만드는 것입니다. 예를 들어 ROOT의 이름을 RENAMED_ROOT로 바꿉니다.
mv ROOT RENAMED_ROOT
응용 프로그램과 함께 war 파일을 tomcat webapps 디렉토리 (내 컴퓨터에서 오래된 ROOT 폴더가있는 디렉토리 : ~ / stack / apache-tomcat / webapps)로 이동하십시오.
War 파일의 이름은 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>
또는
<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