2010-09-29 9 views
2

Si je comprends bien, JBoss * surveille une variété de types de fichiers dans /deploy et effectue certaines actions lorsque le fichier change. Par exemple, JBoss va redéployer un fichier EAR lorsque son heure last-modified change.Redéploiement automatique JBoss

Par conséquent, je pourrais utiliser un code vraiment méchant pour faire un OREILLE se redéployer, comme ceci:

URL url = this.getClass().getClassLoader().getResource("../RavenWeb.ear"); 
String path = url.getPath(); 

File ear = new File(path); 
ear.setLastModified(System.currentTimeMillis()); 

Mais ce que je vraiment veux faire est d'avoir simplement JBoss redéployer l'application Web lorsqu'une configuration externe modifications de fichier. Dites le fichier de configuration vit au C:/foo/bar.properties.

Existe-t-il un MBean ou un autre moyen de le faire qui ne m'obtient pas mauled by velociraptors?


* J'utilise JBoss 5.1.0, si c'est important.

Répondre

0

Je pense que votre meilleur coup est d'avoir un MBean qui rechargera votre fichier de configuration lorsque vous appelez une fonction. Si vous ne voulez pas que cela se produise automatiquement, vous pouvez également envisager d'avoir un MBean qui gère le fichier de configuration pour vous. De cette façon, vous pouvez simplement mettre à jour les propriétés MBean au lieu de changer un fichier de configuration.

+0

Le rechargement du fichier de configuration n'est pas un problème. Mon application peut facilement surveiller le fichier lui-même, mais j'espère pouvoir déléguer la responsabilité, sans parler du mauvais goût que je reçois de la part de l'application qui gère essentiellement son propre cycle de vie. –

0

J'ai copié l'implémentation Log4JService et l'ai placée dans un fichier .sar.

Il suffit simplement d'interroger le fichier de configuration, de l'analyser et de placer un objet Configuration dans le JNDI, afin de pouvoir le récupérer dans mon application. De cette façon, vous n'avez pas besoin de redéployer l'ensemble de l'application et vous pouvez utiliser la nouvelle configuration dans l'application.

Si vous devez faire autre chose que simplement recharger l'application, vous pouvez le faire dans ce service.