1

您能否举个例子,我如何调用WroConfiguration.reloadCache()通过 JMX 调用该方法?我使用 Wildfly,单例启动 ejb,以防万一。

JMX 已开启:jmxEnabled=true

4

2 回答 2

2

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

  1. 在 wro.properties 中应用了以下属性:
cacheUpdatePeriod=0
modelUpdatePeriod=0
debug=false
disableCache=true
jmxEnabled=true
...
  1. 不要尝试在应用了@PostConstruct 注释的初始方法中应用@Singleton/@Startup 注释来更新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);
}
于 2015-04-08T06:39:35.583 回答
1

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

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

于 2015-04-07T18:59:08.630 回答