From: Scott M S. <st...@us...> - 2003-04-25 15:14:42
|
User: starksm Date: 03/04/25 08:14:41 Modified: src/main/org/jboss/management/j2ee Tag: Branch_3_2 LocalJBossServerDomain.java Log: Implement destroyService() to unregister all mbeans found in the same domain as this service. This should help prevent leaks of jsr77 objects that were not removed due to missed notifications. Revision Changes Path No revision No revision 1.2.2.12 +32 -1 jboss-management/src/main/org/jboss/management/j2ee/LocalJBossServerDomain.java Index: LocalJBossServerDomain.java =================================================================== RCS file: /cvsroot/jboss/jboss-management/src/main/org/jboss/management/j2ee/LocalJBossServerDomain.java,v retrieving revision 1.2.2.11 retrieving revision 1.2.2.12 diff -u -r1.2.2.11 -r1.2.2.12 --- LocalJBossServerDomain.java 6 Apr 2003 19:01:16 -0000 1.2.2.11 +++ LocalJBossServerDomain.java 25 Apr 2003 15:14:40 -0000 1.2.2.12 @@ -10,6 +10,8 @@ import java.net.InetAddress; import java.util.Collection; import java.util.Iterator; +import java.util.Hashtable; +import java.util.Set; import javax.management.JMException; import javax.management.MalformedObjectNameException; @@ -17,6 +19,7 @@ import javax.management.MBeanServer; import javax.management.NotificationListener; import javax.management.ObjectName; +import javax.management.MBeanException; import org.jboss.deployment.MainDeployerConstants; import org.jboss.deployment.SubDeployer; @@ -37,7 +40,7 @@ * * @author <a href="mailto:an...@jb...">Andreas Schaefer</a>. * @author Sco...@jb... - * @version $Revision: 1.2.2.11 $ + * @version $Revision: 1.2.2.12 $ **/ public class LocalJBossServerDomain extends J2EEDomain @@ -474,6 +477,34 @@ ObjectName name = (ObjectName) iter.next(); registerWithDeployer(name); } + } + + /** Query for all mbeans in this services domain and unregister them. + * + * @throws Exception if the domain query fails + */ + protected void destroyService() throws Exception + { + ObjectName myName = getServiceName(); + String domain = myName.getDomain(); + ObjectName domainName = new ObjectName(domain, "*", "*"); + Set domainNames = server.queryNames(domainName, null); + log.info("Found "+domainNames.size()+" domain mbeans"); + Iterator domainIter = domainNames.iterator(); + while( domainIter.hasNext() ) + { + try + { + ObjectName name = (ObjectName) domainIter.next(); + if( name.equals(myName) ) + continue; + server.unregisterMBean(name); + } + catch(MBeanException ignore) + { + } + } + super.destroyService(); } protected void registerWithDeployer(ObjectName deployerName) |