如何通过 JMX 以编程方式更新 wro cache/model?
How to update wro cache/model programmatically via JMX?
能否请您举个例子,我如何通过 JMX 调用 WroConfiguration.reloadCache()
方法?
我使用 Wildfly,单例启动 ejb,以防万一。
JMX 已开启:jmxEnabled=true
当jmxEnabled配置设置为true时,MBean会自动注册。如果您打开 jconsole,您应该会看到一个名为 "wro4j-ROOT" 的 MBean(MBean 名称是基于应用程序上下文名称的动态名称)。在那里你应该找到名为 reloadModel & reloadCache 的操作,它可以通过 JMX 触发。
除了使用 JMX,我建议使用以下配置:resourceWatcherUpdatePeriod(将此值设置为大于 0 的值)。这在开发过程中很有用,因为任何更改都将在指定的时间间隔内立即检测到。
这里是 Java EE 环境中的示例和要求:
- 在 wro.properties 中应用了以下属性:
cacheUpdatePeriod=0
modelUpdatePeriod=0
debug=false
disableCache=true
jmxEnabled=true
...
- 不要尝试在应用了@PostConstruct 注释的初始方法中使用@Singleton/@Startup 注释来更新ejb bean 中的wro 缓存模型。 Wro MBean 尚未注册,因此,它不会工作。
- 示例本身:
try
{
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("wro4j-ROOT:type=WroConfiguration");
mbs.invoke(name, "reloadCache", null, null);
mbs.invoke(name, "reloadModel", null, null);
}
catch (InstanceNotFoundException e)
{
logger.warn("Could not find wro4j MBean. It has not been initiated yet");
}
catch (Exception e)
{
logger.error(e);
}
能否请您举个例子,我如何通过 JMX 调用 WroConfiguration.reloadCache()
方法?
我使用 Wildfly,单例启动 ejb,以防万一。
JMX 已开启:jmxEnabled=true
当jmxEnabled配置设置为true时,MBean会自动注册。如果您打开 jconsole,您应该会看到一个名为 "wro4j-ROOT" 的 MBean(MBean 名称是基于应用程序上下文名称的动态名称)。在那里你应该找到名为 reloadModel & reloadCache 的操作,它可以通过 JMX 触发。
除了使用 JMX,我建议使用以下配置:resourceWatcherUpdatePeriod(将此值设置为大于 0 的值)。这在开发过程中很有用,因为任何更改都将在指定的时间间隔内立即检测到。
这里是 Java EE 环境中的示例和要求:
- 在 wro.properties 中应用了以下属性:
cacheUpdatePeriod=0 modelUpdatePeriod=0 debug=false disableCache=true jmxEnabled=true ...
- 不要尝试在应用了@PostConstruct 注释的初始方法中使用@Singleton/@Startup 注释来更新ejb bean 中的wro 缓存模型。 Wro MBean 尚未注册,因此,它不会工作。
- 示例本身:
try { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); ObjectName name = new ObjectName("wro4j-ROOT:type=WroConfiguration"); mbs.invoke(name, "reloadCache", null, null); mbs.invoke(name, "reloadModel", null, null); } catch (InstanceNotFoundException e) { logger.warn("Could not find wro4j MBean. It has not been initiated yet"); } catch (Exception e) { logger.error(e); }