왜 바람둥이가 context.xml 파일을 삭제하는 것을 좋아합니까? 웹 기반 Java

직장에서 웹 기반 Java 응용 프로그램을 개발 중이며 개발 중에 로컬에서 응용 프로그램을 실행해야합니다. Tomcat 문서를 찾아서 적절한 context.xml 파일을 가지고 /etc/tomcat6/Catalina/localhost/있지만 Tomcat은 종종 그것을 삭제하기로 결정합니다! 즉, 다시 넣고 Tomcat을 다시 시작해야합니다.

왜 이렇게합니까? 나는 Tomcat 문서를 검색했으며 더 현명한 사람은 아닙니다.

(Oh 예 : 실제로 호출되지는 context.xml않지만 owners.xml이 애플리케이션의 HTTP 경로 접두사입니다.)

최신 정보

Tomcat이 실행되는 동안 Tomcat이 파일 삭제하는 것을 보았습니다 . 버그를 신고해야한다고 생각합니다 …



답변

빠른 요약 : tomcat이 컨텍스트 파일 제거를 포함하여 컨텍스트를 배포 취소하는 몇 가지 조건 (예 : war 파일 변경, webapp 삭제 또는 새 컨텐츠로 대체)이 있습니다.

세부 정보 : tomcat이 autoDeployment를 수행하는지 또는 수행하지 않는지 (webapp 디렉토리의 변경 사항 확인 및 .xml 디스크립터의 변경 사항 확인)는 다음에 의해 구동됩니다.

  1. $ CATALINA_HOME / conf / server.xml 섹션에 현지화 된 server.xml :

    <Host name = “localhost”appBase = “webapps”unpackWARs = “true” autoDeploy = ” true” xmlValidation = “false”xmlNamespaceAware = “false”>

  2. 컨텍스트 파일에서이 속성을 설정하여 값을 오버로드 할 수도 있습니다.

autoDeploy = true 인 경우 문서를 인용하면 컨텍스트 파일이 제거 될 수 있습니다.

  • WAR 파일을 삭제하면 연관된 확장 디렉토리, 컨텍스트 파일 및 작업 디렉토리 가 제거 되어 애플리케이션 배치 취소 됩니다.
  • 디렉토리를 삭제하면 연관된 컨텍스트 파일 및 작업 디렉토리 가 제거 되어 애플리케이션 배치 취소 됩니다.
  • WAR 파일을 업데이트하면 연관된 확장 디렉토리, 컨텍스트 파일 및 작업 디렉토리 가 제거 되어 애플리케이션 배치 취소 됩니다.
  • 디렉토리 내용이 아닌 디렉토리를 업데이트하면 관련된 컨텍스트 파일 및 작업 디렉토리 가 제거 되어 응용 프로그램 배포 취소 됩니다.

철저한 세부 사항 : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment


답변

당신이 경우 autoDeploy의 원하지 않는 기능을, 예를 들어 프로덕션 환경에서, 당신은 conf의 / 카탈 리 / localhost를 컨텍스트 파일에 다음과 같은 속성을 고려할 수 있습니다 :

  • autoDeploy = “false”
  • deployXML = “false”

META-INF의 application context.xml이 autoDeploy의 server.xml 설정을 무시할 수 있기 때문에 autoDeploy = “false”가 단독으로 작동하지 않을 수 있습니다.

  • 응용 프로그램의 META-INF / context.xml은 autoDeploy와 함께 개발 환경에서 사용됩니다.
  • autoDeploy가없는 프로덕션 환경의 conf / Catalina / localhost 컨텍스트

deployXML 속성 문서 속성 문서는 읽을 가치가 있습니다 (§ 표준 구현).

철저한 autoDeploy 사용자의 경우, 때 컨텍스트가 제거됩니다 : 즉, 응용 프로그램이 배포 취소, 사용자의 경우이 설명되어 있습니다 찾을 수 있습니다 여기에 .


답변

캔 트는 비트에 대답합니다 .

그러나, 이 링크는 사용자가 설정하여이를 중지 할 수 있습니다 상태 autoDeploy="false"에서을server.xml


답변

솔직히 Tomcat의 추론이 무엇인지 알지 못하지만 컨텍스트 요소에 다음 XML 속성을 추가하십시오.

reloadable="false"

따라서 컨텍스트는 다음과 같이 보일 수 있습니다.

<Context path="/" docBase="/some/path/name" reloadable="false">
<!-- Context related stuff -->
</Context>

이것은 Tomcat이 파일을 삭제하지 못하게해야합니다


답변

나는 이것이 오래된 스레드라는 것을 알고 있지만이 문제를 해결하기 위해 찾은 것을 공유 할 것이라고 생각했습니다 …

내 응용 프로그램에 새 war 파일 사본을 배포 할 때마다 내 Tomcat 데스크톱 버전의 context.xml 파일과 똑같은 문제가 발생했습니다.

문제는 파일 시스템에서 직접이 파일을 변경했기 때문에 발생했습니다. 문제를 해결 한 것은 Eclipse 편집기를 통해 context.xml 파일을 편집하는 것이 었습니다. 내 Eclipse에는 “servers”프로젝트가 있는데, 일단 확장하면 context.xml 및 server.xml과 같은 소수의 파일을 볼 수있다. 파일 시스템으로 이동하지 않고 여기에서 파일을 수정하면 변경 사항이 유지됩니다.

다음 스레드 에서이 솔루션을 찾았습니다 :
https://www.liferay.com/community/forums/-/message_boards/message/16511799

나는 이것이 다른 누군가를 돕기를 바랍니다!

-StephenS


답변

제목에 설명 된 일반적인 문제 는 현재 공개 문제인 컨텍스트삭제하지 않고 전쟁에서 재 전개로 다룹니다 .

컨텍스트를 삭제하지 않는 재배치와 배포가 취소 된 후 컨텍스트를 삭제하는 배포 후 배포 간에는 알려진 차이점이 있습니다. 문서가 오래되었으며 관리자 GUI가 여전히 재배치를 지원하지 않습니다.


답변

업로드 된 파일을 저장하는 경로와 같이 서버에서 앱의 값이 다른 경우가 있습니다. 개발자 환경에서 우리는 다음과 같은 것을 가지고 있습니다 :

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" reloadable="false">
     <Parameter name="rutaTrabajo" value="C:\Larry\Proyectos\app\rutaTrabajoxx" override="true"/>
</Context>

그러나 서버에서는 경로가 다릅니다.

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" >
     <Parameter name="rutaTrabajo" value="/usr/share/App/rutaTrabajo" override="true"/>
</Context>

conf / Catalina / localhost에서 context.xml (meapp.xml)을 삭제하는 바람둥이도 같은 문제가 있습니다.

이 문제를 해결하기 위해 context.xml.default를 사용합니다. 동일한 경로에서 context.xml.default라는 파일을 만들고 put 구성 내에 보관하고 싶습니다.

 cat context.xml.default
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" >
     <Parameter name="rutaTrabajo" value="/usr/share/ParkiMeApp/rutaTrabajo" override="true"/>
</Context>

따라서 응용 프로그램을 다시 배포 할 때 confir 매개 변수는 여전히 존재합니다.