如何通过JMX以编程方式更新wro-cache/模型



你能举一个例子吗,我如何通过JMX调用WroConfiguration.reloadCache()方法?我使用Wildfly,单例启动ejb,以备不时之需。

JMX打开:jmxEnabled=true

以下是Java EE环境中的一个示例和要求:

  1. 在wro.properties中,将应用以下属性:
cacheUpdatePeriod=0
modelUpdatePeriod=0
debug=false
disableCache=true
jmxEnabled=true
...
  1. 不要试图用在初始方法中应用的@Singleton/@Startup注释和应用的@PostConstruct注释来更新ejb bean中的wro缓存模型。Wro MBean还没有注册,所以,它不会起作用
  2. 示例本身:
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);
}

jmxEnabled配置设置为true时,MBean将自动注册。如果打开jconsole,应该会看到一个名为"wro4j ROOT"的MBean(MBean名称是基于应用程序上下文名称的动态名称)。在那里,您应该可以找到名为reloadModel&reloadCache,可以通过JMX触发。

除了使用JMX之外,我还建议使用以下配置:resourceWatcherUpdatePeriod(将此值设置为大于0的值)。这在开发过程中很有用,因为在指定的时间间隔内,任何更改都会被开箱即用地检测到。

相关内容

  • 没有找到相关文章

最新更新