[tomcat] Tomcat 7.0에서 웹 애플리케이션의 컨텍스트 경로를 설정하는 방법

내 webapp (또는 WAR 파일)의 이름을 ROOT로 바꿀 수 있지만 IMHO는 끔찍한 방법입니다. 이제 바람둥이 문서를 확인했는데

server.xml 파일에 직접 요소를 배치하지 않는 것이 좋습니다.

그래서 제안한 다른 방법으로 시도했습니다.

개별 컨텍스트 요소는 다음과 같이 명시 적으로 정의 될 수 있습니다. 응용 프로그램 파일 내의 /META-INF/context.xml에있는 개별 파일.

그래서 /META-INF/context.xml다음 코드를 사용하여

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>

그러나 서버를 다시 시작할 때 배포 한 후에도 여전히 “/”에서 컨텍스트를로드하지 못했습니다. "/<WEB_APP_NAME>"

도움이되는 포인터.



답변

할 수있는 일은 다음과 같습니다.

호출 ROOT.xml된 파일 추가<catalina_home>/conf/Catalina/localhost/

이 ROOT.xml은 해당 엔진 및 호스트 (Catalina 및 localhost)에 대한 Tomcat 설치의 루트 컨텍스트에 대한 기본 설정을 대체합니다.

ROOT.xml 파일에 다음을 입력하십시오.

<Context
  docBase="<yourApp>"
  path=""
  reloadable="true"
/>

자, <yourApp>앱 이름입니다 .. 🙂

이제 응용 프로그램이 기본 응용 프로그램으로 표시되며 http://localhost:8080

그러나 한 가지 부작용이 있습니다. 응용 프로그램이 두 번로드됩니다. 한 번만 localhost:8080및에 한 번 localhost:8080/yourApp. 이 문제를 해결하려면 응용 프로그램을 외부 <catalina_home>/webapps에 놓고 ROOT.xml의 docBase 태그에서 상대 또는 절대 경로를 사용하십시오. 이 같은;

<Context
  docBase="/opt/mywebapps/<yourApp>"
  path=""
  reloadable="true"
/>

그리고 모든 것이 정상입니다!


답변

다음 은 나를 위해 일한 유일한 솔루션을 따릅니다 . 이것을 conf / server.xml의 호스트 노드에 추가하십시오

<Context path="" docBase="yourAppContextName">

  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>

Tomcat server.xml 파일로 이동하여 경로를 비워 둡니다.


답변

Tomcat 9.0에서는 다음에서 변경해야합니다. server.xml

<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.jee.server:web"/>

<Context docBase="web" path="" reloadable="true" source="org.eclipse.jst.jee.server:web"/>


답변

이 작은 코드는 가상 호스트를 사용하여 나를 위해 일했습니다.

<Host name="my.host.name" >
   <Context path="" docBase="/path/to/myapp.war"/>
</Host>


답변

가장 빠르고 최상의 솔루션 일 수 있습니다. <TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml

<Context
  docBase="/your_webapp_location_directory"
  path=""
  reloadable="true"
/>

그리고 귀하의 웹앱은 http://<host>:<port>/


답변

한 달 동안이 문제에 직면했습니다 .server.xml에 컨텍스트 태그를 넣는 것은 안전하지 않습니다. 다른 모든 호스트에 배포하는 컨텍스트 요소에 영향을 미칩니다. 큰 응용 프로그램의 경우 연결 오류가 발생하여 격리가 잘 이루어지지 않습니다. .com / domain1Folder !! 또한 데이터베이스 세션 연결이 두 번로드되었습니다! 다른 방법은 컨텍스트 태그가있는 ROOT.xml 파일을 전체 경로와 함께 넣는 것입니다.

 <Context path="" docBase="/var/lib/tomcat7/webapps/ROOT" />

conf / catalina / webappsfoldername에서 warapp를 webappsfoldername 내에 ROOT.war로 배포하고 호스트와 같은 호스트를 지정하십시오.

 <Host name="domianname"  appBase="webapps2" unpackWARs="true"  autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false" >

        <Logger className="org.apache.catalina.logger.FileLogger"
               directory="logs"  prefix="localhost_log." suffix=".txt"
          timestamp="true"/>
</Host>

이 접근법에서 동일한 유형의 앱에 대해서도 사용자 세션이 잘 격리되지 않았습니다! app1과 app1이 동일한 경우 app1 내부에있을 수 있습니다. 서버 측 세션으로 로그인 한 후 자동으로 app2에 로그인 할 수 있습니까?! 따라서 사용자 세션을 jsessionid가 아닌 클라이언트 측 캐시에 보관해야합니다! 로컬 호스트에서 엔진 이름을 변경하여 해결할 수 있습니다. 그러나 바람둥이를 가지고 노는 것은 다른 고양이를 가지고 노는 것보다 더 많은 시간이 필요하다고 말합시다!


답변

server.xml 또는 ROOT.xml과 같은 서버 구성을 업데이트하지 않는 것이 좋습니다.

컨텍스트 경로 설정을 포함하여 웹 응용 프로그램 META-INF 디렉토리에 context.xml 구성 파일을 넣을 수 있습니다. 이것은 기본 서버 설정을 무시합니까?

즉 :

<Context docBase="yourAppName" path="/yourAppPath" reloadable="true">