Справочная информация: У меня есть задача start/stop/reload
приложение JMX
, развернутое в tomcat, jboss, weblogic или websphere.(Вероятно, известно, что на упомянутых серверах веб-приложений уже есть страница менеджера для ее реализации, мы просто хотим сосредоточить функцию start/stop/reload
всех этих четырех основных администраторов веб-серверов на JMX
на одной странице).
Вопрос с котом: У меня есть пример приложения с именем JMXWebExample1-0.1
.Я мог посетить страницу менеджера, введя tomcat/tomcat(username/password)
на страницу входа в систему, и я вижу следующую ссылку, нажав кнопку остановки рядом с именем приложения.
http://localhost:8080/manager/html/stop;jsessionid=49CDCBA3DDB3081BA3D6C5BCD9E4C8A3?path=/JMXWebExample1-0.1&org.apache.catalina.filters.CSRF_NONCE=59E98C1BA757DD3E7D9FDEA4504D3423
Ссылка имеет jsessionid=49CDCBA3DDB3081BA3D6C5BCD9E4C8A3
и CSRF token org.apache.catalina.filters.CSRF_NONCE=59E98C1BA757DD3E7D9FDEA4504D3423
.
Поэтому, когда я вызываю http://localhost:8080/manager/html/stop?path=/JMXWebExample1-0.1
, он всегда дает мне 403 кода состояния (доступ запрещен). Вопрос как я могу остановить приложение JMXWebExample1-0.1
аналогично странице менеджера tomcat?
Несколько шагов перед запуском tomcat У меня есть следующие шаги перед запуском tomcat:1) Включите JMX, добавив% CATALINA_OPTS%,
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
2) tomcat-users.xml
: Я поставил следующую конфигурацию:
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
3) context.xml, который находится под E:\apache-tomcat-9.0.12\webapps\manager\META-INF\context.xml
, я комментирую следующую строку:
<Context antiResourceLocking="false" privileged="true" >
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> -->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
Обновлен: E:\apache-tomcat-9.0.12\conf\tomcat-users.xml
, при входе в систему я использую tomcat
.
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="admin-script" />
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="admin-gui"/>
<role rolename="admin-jmx" />
<user username="tomcat" password="tomcat" roles="manager-gui,manager-jmx"/>
<user username="both" password="both" roles="tomcat,role1"/>
<user username="role1" password="role1" roles="role1"/>
<user username="all" password="all" roles="tomcat,role1,manager-script,manager-jmx" />
В E:\apache-tomcat-9.0.12\webapps\manager\META-INF\context.xml
:
<Context antiResourceLocking="false" privileged="true" >
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=".*" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
Команда для вызова: http://localhost:8080/manager/html/stop?path=/JMXWebExample1-0.1