背景:
我有一个任务要start/stop/reload
申请由JMX
部署在 tomcat、jboss、weblogic 或 websphere 中。 (人们可能知道提到的Web应用程序服务器已经有管理器页面来实现它,我们只是想集中所有这四个主要的Web服务器管理员'start/stop/reload
特征由JMX
到一页)。
tomcat的问题:
我有一个名为的示例应用程序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
, and 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)通过添加%CATALINA_OPTS%启用JMX,
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>
Updated:
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" />
In 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