据我了解,JBoss *监视/deploy
中的各种文件类型,并在文件更改时执行某些操作。例如,JBoss将在last-modified
时间发生变化时重新部署EAR。
因此,我可以使用一些非常讨厌的代码来重新部署EAR,如下所示:
URL url = this.getClass().getClassLoader().getResource("../RavenWeb.ear");
String path = url.getPath();
File ear = new File(path);
ear.setLastModified(System.currentTimeMillis());
但我真正想要做的只是让JBoss在外部配置文件发生变化时重新部署webapp。假设配置文件位于C:/foo/bar.properties
。
是否有MBean或其他方式完成此操作会导致我无法mauled by velociraptors?
*我正在使用JBoss 5.1.0,如果重要的话。
答案 0 :(得分:0)
我认为你最好的办法是拥有一个MBean,只要你调用一个函数,它就会重新加载你的配置文件。如果您不想自动执行此操作,您还可以考虑为您配置MBean 处理配置文件。这样,您只需更新MBean属性,而不是更改配置文件。
答案 1 :(得分:0)
我复制了Log4JService实现并将其放在.sar。
中它只是简单地轮询配置文件,解析它并将一个Configuration对象放在JNDI中,以便我可以在我的应用程序中检索它。这样您就不必重新部署整个应用程序,并且可以在应用程序中使用新配置。
如果您不得不做其他事情,而不仅仅是重新加载应用程序,您可以在此服务中执行此操作。