From d114e7b4de78fde1abcd4afd79133d1641dbafc3 Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 19 Jun 2009 18:48:29 +0000 Subject: Only unregister the MBean if it's registered git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@786621 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tuscany/sca/node/impl/NodeImpl.java | 22 +++++++++++++++------- .../tuscany/sca/node/management/NodeManager.java | 10 ++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) (limited to 'java/sca/modules/node-impl/src') diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java index c595e34b97..c94879af56 100644 --- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java +++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java @@ -61,6 +61,8 @@ public class NodeImpl implements Node, Client { private NodeConfiguration configuration; private NodeFactoryImpl manager; + private NodeManager mbean; + public NodeImpl(NodeFactoryImpl manager, NodeConfiguration configuration) { super(); this.configuration = configuration; @@ -97,8 +99,8 @@ public class NodeImpl implements Node, Client { MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); try { - NodeManager mbean = new NodeManager(this); - mBeanServer.registerMBean(mbean, NodeManager.getName(this)); + mbean = new NodeManager(this); + mBeanServer.registerMBean(mbean, mbean.getName()); /* LocateRegistry.createRegistry(9999); JMXServiceURL url = @@ -107,6 +109,7 @@ public class NodeImpl implements Node, Client { connectorServer.start(); */ } catch (Exception e) { + mbean = null; logger.log(Level.SEVERE, e.getMessage(), e); } @@ -125,11 +128,16 @@ public class NodeImpl implements Node, Client { if (compositeActivator == null) { return; } - MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); - try { - mBeanServer.unregisterMBean(NodeManager.getName(this)); - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + + if (mbean != null) { + MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); + try { + mBeanServer.unregisterMBean(mbean.getName()); + } catch (Exception e) { + logger.log(Level.SEVERE, e.getMessage(), e); + } finally { + mbean = null; + } } NodeFinder.removeNode(this); diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/management/NodeManager.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/management/NodeManager.java index 9f7bdfce47..1668619b48 100644 --- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/management/NodeManager.java +++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/management/NodeManager.java @@ -30,9 +30,15 @@ import org.apache.tuscany.sca.node.impl.NodeImpl; */ public class NodeManager implements NodeManagerMBean { private NodeImpl node; + private ObjectName name; public NodeManager(NodeImpl node) { this.node = node; + try { + this.name = getName(node); + } catch (MalformedObjectNameException e) { + // Ignore + } } public String getURI() { @@ -43,6 +49,10 @@ public class NodeManager implements NodeManagerMBean { return node.getConfiguration().getDomainURI(); } + public ObjectName getName() { + return name; + } + public static ObjectName getName(Node node) throws MalformedObjectNameException { String name = Node.class.getPackage().getName() + ":Type=" -- cgit v1.2.3