如何通过JMX以编程方式更新wro缓存/模型?

时间:2015-04-07 13:44:30

标签: java caching jmx wro4j

请举例说明如何通过JMX调用WroConfiguration.reloadCache()方法? 我使用Wildfly,singleton启动ejb,以防它确实重要。

JMX已开启:jmxEnabled=true

2 个答案:

答案 0 :(得分:1)

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

除了使用JMX之外,我建议使用以下配置: resourceWatcherUpdatePeriod (将此值设置为大于0的值)。这在开发过程中非常有用,只要在指定的时间间隔内检测到任何更改。

答案 1 :(得分:1)

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

  1. 在wro.properties中应用了以下属性:
  2. cacheUpdatePeriod=0
    modelUpdatePeriod=0
    debug=false
    disableCache=true
    jmxEnabled=true
    ...
    
    1. 不要尝试使用应用了@PostConstruct注释的初始方法中应用的@ Singleton / @ Startup注释来更新ejb bean中的wro缓存模型。 Wro MBean尚未注册,因此无法使用。
    2. 示例本身:
    3. 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);
      }