Tomcat을 다시 시작하지 않고 실제로 파일을 편집하는 것이 가능하기 때문에 질문이 완전히 올바르게 작성되지 않았다고 말하면서 시작하지만 변경 사항은 실행중인 프로세스에서 무시됩니다.
실제 질문은 server.xml
Tomcat을 다시 시작하지 않고 변경 사항을 적용하는 방법 입니다.
Tomcat 온라인 문서 의 시작 프로세스 및 클래스 로더 페이지에서 정보를 수집하여 이를보다 자세히 이해할 수 있습니다.
보다 구체적으로 serverStartup.txt 및 시작 프로세스 의 UML 다이어그램에 설명되어 있으며 관련 부분은 다음과 같이 요약 할 수 있습니다.
Sequence 1. Start from Command Line
...
Sequence 2. Process command line argument (start, startd, stop, stopd)
Class: org.apache.catalina.startup.Bootstrap (assume command->start)
What it does:
a) Catalina.setAwait(true);
b) Catalina.load()
b3) createStartDigester()
Configures a digester for the main server.xml elements
b4) Load the server.xml and parse it using the digester
Parsing the server.xml using the digester is an automatic
XML-object mapping tool, that will create the objects defined
in server.xml
Startup of the actual container has not started yet.
b6) Calls initialize on all components, this makes each object
register itself with the JMX agent.
이는 서블릿 엔진 (Catalina)의 Bootstrap 클래스 로더를 만든 후에 발생합니다.
이 정보를 사용하면 시작 프로세스에서 server.xml
파일을 구문 분석 할 때 명확 해지지 만이 파일에 변경 사항을 적용하기 위해 Tomcat을 다시 시작해야하는 이유에 대한 질문에는 실제로 대답하지 않습니다.
대답은 있다는 것입니다 일부 의 일부가 런타임에 동적으로 변경 될 수있다 JMX를 사용하여 . 이것이 가능하려면 적절한 MBean을 등록해야하고 (b6 단계 이상) SET 조작을 승인해야합니다 (일부 MBean에는 GET 인터페이스 만 있음).
특정 경우에는 런타임에 새 호스트를 생성하고 등록 할 수있는 방법이 없기 때문에 Tomcat 프로세스를 다시 시작하여 Bootstrap 클래스 로더가 해당 객체를 인스턴스화하고이를 등록해야하는 이유입니다. JMX 에이전트.
그 후, jconsole
JDK와 함께 제공되는 것과 같은 JMX 클라이언트에서 해당 호스트를 수정할 수 있습니다.
jconsole
JMX 가능 Tomcat에 연결 하고 Host MBean을 탐색하여 사용 가능한 모든 속성을 확인하십시오.
사용 가능한 모든 작업을 확인하십시오 (아래에 표시된 작업 중 하나).