Refactoring the Activator
diff --git a/org.eclipse.gemini.mgmt/src/org/eclipse/gemini/mgmt/Activator.java b/org.eclipse.gemini.mgmt/src/org/eclipse/gemini/mgmt/Activator.java
index f4d7442..c30c35c 100644
--- a/org.eclipse.gemini.mgmt/src/org/eclipse/gemini/mgmt/Activator.java
+++ b/org.eclipse.gemini.mgmt/src/org/eclipse/gemini/mgmt/Activator.java
@@ -69,10 +69,34 @@
 

 	private static final String VIRGO_BUNDLE_ID = "org.eclipse.virgo.management.bundle";

 	

-	private List<MBeanServer> mbeanServers = new CopyOnWriteArrayList<MBeanServer>();

+	private final List<MBeanServer> mbeanServers = new CopyOnWriteArrayList<MBeanServer>();

+	

+	private final AtomicBoolean servicesRegistered = new AtomicBoolean(false);

+	

+	private final ObjectName frameworkName;

+	

+	private final ObjectName bundleStateName;

+	

+	private final ObjectName bundleWiringStateName;

+	

+	private final ObjectName packageStateName;

+	

+	private final ObjectName serviceStateName;

+	

+	private final ObjectName configAdminName;

+	

+	private final ObjectName permissionAdminName;

+	

+	private final ObjectName provisioningServiceName;

+	

+	private final ObjectName userAdminName;

+	

+	private ServiceTracker<MBeanServer, ?> mbeanServiceTracker;

 	

 	private BundleContext bundleContext = null;

 	

+	private StandardMBean framework;

+	

 	private StandardMBean bundleState;

 	

 	private StandardMBean bundleWiringState;

@@ -81,30 +105,6 @@
 	

 	private StandardMBean serviceState;

 	

-	private ObjectName bundleStateName;

-	

-	private ObjectName bundleWiringStateName;

-	

-	private StandardMBean framework;

-	

-	private ObjectName frameworkName;

-	

-	private ServiceTracker<MBeanServer, ?> mbeanServiceTracker;

-	

-	private ObjectName packageStateName;

-	

-	private ObjectName serviceStateName;

-	

-	private ObjectName configAdminName;

-	

-	private ObjectName permissionAdminName;

-	

-	private ObjectName provisioningServiceName;

-	

-	private ObjectName userAdminName;

-	

-	private AtomicBoolean servicesRegistered = new AtomicBoolean(false);

-	

 	private ServiceTracker<ConfigurationAdmin, ?> configAdminTracker;

 	

 	private ServiceTracker<PermissionAdmin, ?> permissionAdminTracker;

@@ -113,6 +113,22 @@
 	

 	private ServiceTracker<UserAdmin, ?> userAdminTracker;

 

+	public Activator() {

+		try {

+			frameworkName = new ObjectName(FrameworkMBean.OBJECTNAME);

+			bundleStateName = new ObjectName(CustomBundleStateMBean.OBJECTNAME);

+			bundleWiringStateName = new ObjectName(CustomBundleWiringStateMBean.OBJECTNAME);

+			serviceStateName = new ObjectName(CustomServiceStateMBean.OBJECTNAME);

+			packageStateName = new ObjectName(PackageStateMBean.OBJECTNAME);

+			configAdminName = new ObjectName(ConfigurationAdminMBean.OBJECTNAME);

+			permissionAdminName = new ObjectName(PermissionAdminMBean.OBJECTNAME);

+			provisioningServiceName = new ObjectName(ProvisioningServiceMBean.OBJECTNAME);

+			userAdminName = new ObjectName(UserAdminMBean.OBJECTNAME);		

+		} catch (Exception e) {

+			throw new IllegalStateException("Unable to start Gemini Management, Object name creation failed.", e);

+		}

+	}

+	

 	/**

 	 * {@inheritDoc}

 	 */

@@ -127,16 +143,6 @@
 			this.bundleContext = bundleContext;	

 			LOGGER.info("Starting OSGi JMX system");

 		}

-		frameworkName = new ObjectName(FrameworkMBean.OBJECTNAME);

-		bundleStateName = new ObjectName(CustomBundleStateMBean.OBJECTNAME);

-		bundleWiringStateName = new ObjectName(CustomBundleWiringStateMBean.OBJECTNAME);

-		serviceStateName = new ObjectName(CustomServiceStateMBean.OBJECTNAME);

-		packageStateName = new ObjectName(PackageStateMBean.OBJECTNAME);

-		configAdminName = new ObjectName(ConfigurationAdminMBean.OBJECTNAME);

-		permissionAdminName = new ObjectName(PermissionAdminMBean.OBJECTNAME);

-		provisioningServiceName = new ObjectName(ProvisioningServiceMBean.OBJECTNAME);

-		userAdminName = new ObjectName(UserAdminMBean.OBJECTNAME);

-

 		mbeanServiceTracker = new ServiceTracker<MBeanServer, Object>(this.bundleContext, MBeanServer.class, new MBeanServiceTracker());

 		LOGGER.fine("Awaiting MBeanServer service registration");

 		mbeanServiceTracker.open();

@@ -255,7 +261,6 @@
 			LOGGER.log(Level.FINE, "OSGi UserAdminMBean deregistration problem", e);

 		}

 		userAdminTracker = null;

-

 		servicesRegistered.set(false);

 	}