[tomcat] 루트 응용 프로그램을 변경하는 방법?

Tomcat 6 웹 서버의 기본 응용 프로그램을 “ROOT”(webapps 폴더 내부)와 다른 응용 프로그램으로 변경하려고합니다. 가장 좋은 방법은 무엇입니까?



답변

세 가지 방법이 있습니다.

  • 먼저 해당 bin디렉토리 ( sh shutdown.sh) 에서 Tomcat을 종료하십시오 . 그런 다음 Tomcat webapps폴더 의 모든 내용을 삭제하십시오 ( rm -fr *). 그런 다음 WAR 파일의 이름을로 바꾸고 ROOT.war마지막으로 bin디렉토리 ( sh startup.sh) 에서 Tomcat을 시작하십시오 .

  • 전쟁 파일을 $CATALINA_BASE/webapps원래 이름으로 두십시오 . 해제
    autoDeploydeployOnStartup을 에 호스트 요소에 server.xml파일. 경로
    docBase 속성을 server.xml모두 지정하여의 모든 애플리케이션 컨텍스트를 명시 적으로 정의하십시오 . 모든 Tomcat 자동 배포 메커니즘을 비활성화했기 때문에이 작업을 수행해야합니다. Tomcat은에서 컨텍스트를 찾지 않으면 더 이상 애플리케이션을 배포하지 않습니다 .server.xml

    두 번째 방법 : 응용 프로그램을 변경하려면 Tomcat을 중지했다가 다시 시작해야합니다.

  • WAR 파일을 외부에 두십시오 $CATALINA_BASE/webapps(이중 배치를 방지하려면 외부에 있어야 함). 에 이름이 지정된 컨텍스트 파일 ROOT.xml을 배치하십시오 $CATALINA_BASE/conf/. 이 컨텍스트 파일의 단일 요소에는 WAR 파일의 위치를 ​​가리키는 docBase 속성 이 있어야
    합니다. 경로 요소는 설정하지 않아야합니다 . .xml이 경우 파일 이름에서 파생됩니다 ROOT.xml. 자세한 내용은 컨텍스트 컨테이너 설명서를 참조 하십시오.

참고


답변

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에서는 myAPPat /and ROOTat 에 액세스 할 수 있습니다 ./ROOT

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

<Host>server.xml 의 섹션에 위의 추가


답변

루트 기본 응용 프로그램은 일반적으로 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이라는 파일을 사용하여 정의 할 수 있습니다.”


답변

다음과 같이 약간 해킹 방식 으로이 작업을 수행 할 수 있습니다.

  1. 톰캣 중지
  2. ROOT.war를 옆으로 이동하고 rm -rf webapps / ROOT
  3. webapps / ROOT.war에 복사하려는 웹앱을 복사하십시오.
  4. Tomcat 시작

답변

다른 해결책은 원하는 기본 웹 애플리케이션으로 리디렉션을 전송하고 해당 서블릿을 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을 쉽게 수정할 수 있습니다.

이 작업을 수행하는 데 부정적인 영향이 있는지 확실하지 않지만 테스트 한 결과 작동하는 것 같습니다.