Wicket 애플리케이션이 관리자 비밀번호 없이 자체 재시작을 트리거할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1850122

  •  13-09-2019
  •  | 
  •  

문제

저는 Wicket을 처음 사용하고 있으며 정리, DB 업데이트, 복구 등을 실행하기 위한 일종의 유지 관리 관리 페이지를 사용하여 내부에서 웹 애플리케이션을 유지 관리하고 싶습니다.데이터 바인딩을 위해 Hibernate나 이와 유사한 것을 사용할 계획이므로 이러한 작업을 실행할 수 있는 모든 사람에게 Tomcat 관리자 비밀번호를 제공하지 않고 내부에서 애플리케이션의 완전한 재부팅을 트리거하고 싶습니다.

내가 알아낸 바로는 관리자 비밀번호 없이 Java 웹 애플리케이션을 실제로 다시 시작하는 쉬운 방법은 없는 것 같습니다.그러나 관리 패널에 이러한 재시작 기능이 있는 Java 웹앱이 많기 때문에 특정 서블릿 컨테이너 또는 일부 웹 프레임워크에서 재시작을 트리거하는 것이 가능해야 한다고 가정합니다.그들은 어떻게든 트릭을 수행해야 합니까?(또는 실제로 처음부터 다시 시작하지 않고 완전히 다시 시작하지 않고 다시 초기화할 수도 있습니다.)

Wicket에 이를 수행할 수 있는 몇 가지 내부 방법이 있지만 Wicket 또는 Tomcat이 애플리케이션 종료 및 다시 시작으로 트리거될 수 있다는 내용을 찾을 수 없습니까?(공개적으로 접근할 수 있지만 JavaDoc은 내부 용도로만 사용하기 때문에 권장하지 않습니다)

보안 관점에서 보면 애플리케이션이 자체 코드에서 이러한 재시작을 요청할 수 없어야 하는 이유를 실제로 알 수 없습니다.

이 작업을 수행할 수 있습니까? 그렇다면 응용 프로그램을 다시 시작하려면 어떻게 해야 합니까?

편집하다: 내 질문을 더 정확하게 만들기 위해 :사용자나 앱 모두 Tomcat 관리자 인터페이스에 액세스하는 데 사용할 수 있는 비밀번호를 가져서는 안 됩니다.나는 인증을 받을 필요 없이 특정 애플리케이션을 다시 시작하기 위해 서블릿 컨테이너가 트리거되도록 호출할 몇 가지 방법이나 설정할 플래그를 생각하고 있었습니다.내 생각에는 애플리케이션이 서블릿 컨테이너에서 실행되기 때문에 종료하고 다시 시작할 수 있는 방법이 있어야 한다고 생각합니다.일반적으로 Java 앱 서버에서 이것이 가능하지 않은 경우 기본 프레임워크(이 경우 Wicket)를 호출하여 실행 중인 모든 스레드를 종료하고 가능한 한 많이 정리한 후 다시 시작하여 애플리케이션 수준에서 이를 수행할 수 있는 방법이 있을 수 있습니다. 프레임워크를 사용하는 애플리케이션앱 스택의 "소프트 재부팅"과 같은 것입니다.

도움이 되었습니까?

해결책

귀하의 앱이 Wicket을 사용하고 있다는 것은 귀하의 질문과 거의 관련이 없습니다.Wicket 프레임워크를 사용하는 Java 웹 애플리케이션입니다.Tomcat 컨테이너를 사용하여 웹 앱을 다시 시작하는 방법을 찾고 있는 경우입니다.다른 웹 애플리케이션 컨테이너(부두 등)를 선택하는 경우 절차를 변경해야 합니다.

다음 URL을 눌러 앱을 시작할 수 있습니다. http://localhost:8080/manager/start?path=/myapp 그리고 http://localhost:8080/manager/stop?path=/myapp 앱을 중지하려면/myapp을 애플리케이션 컨텍스트로 변경하면 시작/중지 제어권을 갖게 됩니다.

그런 다음 코드에서 내부적으로 비밀번호 문제를 처리할 수 있습니다.

귀하의 설명에 비추어 볼 때 이 톰캣 문서 그리고 JMX를 사용하세요.그러나 JMX도 비밀번호로 보호됩니다.웹앱에서 컨테이너 컨트롤을 가져오는 데 대한 표준은 없습니다.

다른 팁

나는 다른 웹 프레임 워크가 실제로 이것을 뒷받침하는 것을 생각하려고 노력하고 있습니다. 나는 Jim이 솔루션의 올바른 수준을 가리키고 있다고 생각합니다. 웹 컨테이너가 사용되는 프레임 워크에 관계없이 포함 된 웹 앱을 다시 시작할 수 있어야합니다. Tomcat은 관리자 응용 프로그램을 사용할 수 있어야합니다. (내 검색에서) Jetty가 JMX MBeans를 통해이 기능을 노출시키는 것으로 보입니다. 따라서 컨테이너간에 휴대 할 수 없을 수 있습니다.

이 휴대용, 모든 프레임 워크에서 다시 시작하는 데 필요한 것들을 분리해야한다고 생각합니다. 최대 절전 모드 인 경우 세션 공장을 다시 시작하십시오. 스프링 구성이라면, 이것은 확실히 더 방해가 될 수 있지만, 콩을 교체하거나 재구성하는 것이 갈 길입니다. I18N 또는 마크 업 리소스 개찰구라면 이미 도움이 될 수 있다고 생각합니다.

또한 JMX를 살펴 보는 것이 좋습니다. JMX의 인증 인증을 끄는 경우 인터넷에서 JMX 포트에 도달 할 수 없도록 할 수 있습니다 (호스트 기반 방화벽의 포트 필터링 또는 로컬 IP 주소에만 바인딩). JMX는 Applications, Java EE 세계의 컨테이너의 원격 모니터링 및 제어를 표준화하기위한 것이므로 원하는 인프라를 제공합니다.

또는 다른 웹 컨테이너 (바람직하게는 내장 된 웹 컨테이너)를 사용하고 컨테이너가 Java 코드에서 다시 시작됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top