나는 Wicket을 처음 사용하고 있으며 정리, DB 업데이트, 복구 등을 수행하기위한 유지 관리 페이지를 사용하여 내부에서 웹 응용 프로그램을 유지 관리하려고합니다. 데이터 바인딩을 위해 Hibernate 나 그와 비슷한 것을 사용할 계획이기 때문에이 액션들을 실행할 수있는 모든 사람에게 Tomcat 관리자 암호를 제공하지 않으면 내부에서 응용 프로그램을 완전히 재부팅하려고합니다.Wicket 응용 프로그램이 관리자 암호없이 자체적으로 다시 시작될 수 있습니까?
내가 아는 한, 관리자 암호없이 Java 웹 응용 프로그램을 다시 시작할 수있는 쉬운 방법이없는 것 같습니다. 그러나 관리자 패널에는 이러한 재시작 기능이있는 많은 Java 웹 응용 프로그램이 있으므로 특정 서블릿 컨테이너 또는 일부 웹 프레임 워크에서 다시 시작을 트리거 할 수 있어야한다고 가정합니다. 그들은 어떻게 든 그 트릭을해야만합니까? (또는 처음부터 다시 시작하지 않고 다시 시작하지 않고 재시작하지 마십시오.)
Wicket 또는 Tomcat이 종료되었을 때 응용 프로그램에서 종료 및 재시작 할 수있는 항목을 찾을 수 없습니다. Wicket의 내부 메소드가 그렇게 할 수 있을까요? (공개적으로 액세스 할 수 있지만 내부 용도로만 사용되기 때문에 JavaDoc은 이에 대해 조언합니다.)
보안 관점에서 보면 응용 프로그램이 자체 코드에서 이러한 재시작을 요청할 수 없어야하는 이유를 알 수 없습니다 .
이 작업을 수행 할 수 있습니까? 그렇다면 응용 프로그램에서 다시 시작해야 할 작업은 무엇입니까?
편집 : 정확하게 질문하십시오 : 사용자와 응용 프로그램 모두 Tomcat 관리자 인터페이스에 액세스하는 데 사용할 수있는 암호가 없어야합니다. 어떤 메소드를 호출하거나 서블릿 컨테이너가 특정 어플리케이션을 재시작하도록 트리거되도록 설정할 플래그를 생각하고있었습니다. 내 생각에 응용 프로그램은 서블릿 컨테이너에서 실행 중이므로 종료하고 다시 시작해야합니다. Java App 서버에서 일반적으로 가능하지 않은 경우, 실행중인 모든 스레드를 종료하고 가능한 한 많이 정리하고 다시 시작하기 위해 기본 프레임 워크 (이 경우 Wicket)를 호출하여 응용 프로그램 수준에서 수행 할 수있는 방법이있을 수 있습니다 프레임 워크를 사용하는 응용 프로그램; 앱 스택의 "소프트 재부팅"과 같은 것입니다.
하지만 사용자가 관리자 암호 (물론 포트 8080에 대한 직접 액세스를 차단하고 HTTP 인증을 사용하는 Apache를 통해 프록시하므로 관리자 인터페이스에 액세스하는 두 번째 계정이 있어야합니다). 질문 제목이 정확하지 않을 수 있습니다. 사용자가 앱을 다시 시작할 수 있어야하지만 관리자 비밀번호를 사용하여 앱 자체도 사용자도 관리자에게이 방법으로 액세스해야합니다. getServletContext()와 같은 것을 생각하고있었습니다. restartApplication(); (그러한 이름은 분명히 존재하지 않습니다) – Energiequant
HttpClient와 같은 URL을 사용하면 사용자의 암호를 입력 할 수 있으므로 사용자는 암호를 입력 할 필요가 없으므로 입력 할 필요가 없습니다. 웹 응용 프로그램의 컨테이너 컨트롤에 액세스 할 수 없습니다. –
cron 작업과 wget이 문제를 잘 해결할 것입니다. wget --save-cookies cookies.txt \ --post-data 'user = admin & password = mypassword'\ http : // localhost : 8080/manager/stop? path =/myapp 스크립트는 root 만 읽을 수있게 만들고 암호를 잊어 버릴 염려가 없습니다. wget --load-cookies cookies.txt \ -p http : // localhost : 8080/manager/start? path =/myapp – perilandmishap