2010-05-06 8 views
0

J'ai une application de ressort qui utilise JBoss Drools 5. Cela fonctionne correctement, sauf lorsque je tente de redéployer (c'est-à-dire de déployer à chaud) l'application après avoir effectué un changement au cours du développement. Il semble que tomcat garde un verrou sur 2 fichiers jars de drools, drools-compiler-5.0.1.jar et drools-core-5.0.1.jar. Comme ils ne peuvent pas être supprimés, le nouveau fichier war n'est pas déployé. Si mon application ne fait aucun appel logique Drools, le déploiement à chaud fonctionne.J'ai un problème pour redéployer une application en utilisant Drools et Tomcat 6

Quelqu'un a-t-il des idées?

Répondre

1

Je ne connais pas les spécificités de drools, mais il y a de fortes chances que Tomload classloader ne puisse pas décharger complètement votre application. Problème similaire pour la consignation des journaux est expliqué ici: http://blogs.oracle.com/fkieviet/entry/classloader_leaks_the_dreaded_java

Pour contourner le problème, vous pouvez essayer d'utiliser antiResourceLocking = "true" dans votre $tomcat_home/conf/context.xml. Cela devrait au moins aider à libérer les verrous. Pour plus de détails, consultez http://tomcat.apache.org/tomcat-6.0-doc/config/context.html.

+0

Merci, cela a fait l'affaire. – FrankL

+0

Un problème similaire existe avec 'mail.jar' de JavaMail à propos. Il va "se bloquer" chaque fois que vous avez envoyé au moins un mail. Le problème sous-jacent est causé par le système d'exploitation. Windows est connu dans cela. – BalusC

+0

@FrankL - si cela a aidé, n'oubliez pas de marquer la réponse comme acceptée :) @BalusC - Je pense que Windows ne peut pas être blâmé dans ce cas juste parce que le processus Java détient le verrou de fichier. Oui, je préfère de loin le verrouillage de type Linux, mais le problème racine est ici Java (bibliothèque ou langage particulier), et pas OS. – mindas