Contexte :
J'ai une tâche à accomplir start/stop/reload
une demande de JMX
déployé dans tomcat, jboss, weblogic ou websphere. (On sait probablement que les serveurs d'application web mentionnés ont déjà une page de gestion pour l'implémenter, nous voulons simplement concentrer tous les administrateurs de ces quatre grands serveurs web'). start/stop/reload
fonctionnalité par JMX
en une seule page).
Question avec tomcat :
J'ai un exemple d'application nommé JMXWebExample1-0.1
. J'ai pu visiter la page du gestionnaire en entrant tomcat/tomcat(username/password)
à la page de connexion demandée, et je vois le lien suivant en cliquant sur le bouton d'arrêt à côté du nom de l'application.
http://localhost:8080/manager/html/stop;jsessionid=49CDCBA3DDB3081BA3D6C5BCD9E4C8A3?path=/JMXWebExample1-0.1&org.apache.catalina.filters.CSRF_NONCE=59E98C1BA757DD3E7D9FDEA4504D3423
Le lien a jsessionid=49CDCBA3DDB3081BA3D6C5BCD9E4C8A3
et CSRF token org.apache.catalina.filters.CSRF_NONCE=59E98C1BA757DD3E7D9FDEA4504D3423
.
Ainsi, lorsque j'invoque, http://localhost:8080/manager/html/stop?path=/JMXWebExample1-0.1
Il me donne toujours un code d'état 403 (accès refusé). La question est la suivante comment je pourrais arrêter l'application JMXWebExample1-0.1
similaire à la page du gestionnaire de tomcat ?
Quelques étapes avant de démarrer tomcat
J'ai suivi les étapes suivantes avant le démarrage de tomcat :
1) Activer JMX en ajoutant %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
: J'ai mis la configuration suivante :
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
3) context.xml qui se trouve sous E:\apache-tomcat-9.0.12\webapps\manager\META-INF\context.xml
Je commente la ligne suivante :
<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>
Mise à jour :E:\apache-tomcat-9.0.12\conf\tomcat-users.xml
Lors de la connexion, j'utilise 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-guimanager-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" />
En 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>
Commande à invoquer : http://localhost:8080/manager/html/stop?path=/JMXWebExample1-0.1