2011-07-20 30 views
3

有没有办法使用JMX或使用HTTP请求启动,停止或重新启动运行在tcserver中的应用程序?例如,在Tomcat的6.0,下面可以做启动应用程序:使用JMX/Hyperic代理程序在tc服务器启动/停止应用程序

http://localhost:8080/manager/start?path=/examples 

当我开始Hyperic公司代理,我无法看到在代理过程中,开始定义的任何Mbean的/停止中的运行实例一个tcserver。

回答

2

一个Tomcat(和可能的tcServer也一样)注册一个MBean的每一个WebModule它看起来像

Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/jolokia

在域名和名称属性取决于您的安装和WebModule。 这些MBean中的每一个都有一个start()stop()操作。

如果您使用的是Jolokia agent,你可以直接使用像

 
    wget -O - -q 
     http://localhost:8080/jolokia/exec/Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=/--/localhost/-/jolokia/start 

HTTP调用(斜杠需要进行转义,用/单斜杠 - /双斜线与/ - /见详情请见Jolokia reference manual)。

+0

+1用于引用Jolokia - 节省我的时间 – powerMicha

+0

我无法从jconsole找到任何特定于我的运行时实例的MBean。我不明白两件事:1)通过使用来自jconsole的jmx url作为远程进程连接,虽然一切都在同一台机器上运行,但我可以访问我的tcserver运行时实例mbeans。 2)现在,当我的tcserver关闭时,我想我可以通过JMX使用hyperic agent启动它,即使这似乎是不可能的。 – Prasanna

+1

对于jconsole,我不知道每个MBean是否在所有模式下都可用。对于基于JSR-160的通信(即,连接JMX服务URL),如果您在URL中指定了适当的MBeanServer,则它们应该可用。可以有多个MBeanServer pro JVM(例如,Weblogic至少使用3个)。对于第二点,您显然无法通过JMX启动JVM,因为JMX仅在JVM运行时才可用。我不知道一个Hyperic代理是否可以启动一个Java进程,但如果是这样,不通过JMX。 –

相关问题