/** {@inheritDoc} */
 @Override
 public void stopGCMMonitoring() {
   if (started) {
     jmxNotificationManager.unsubscribe(
         FactoryName.createActiveObjectName(PAActiveObject.getBodyOnThis().getID()), this);
     started = false;
   }
 }
 /** {@inheritDoc} */
 @Override
 public void startGCMMonitoring() {
   if (statistics == null) {
     registerMethods();
   }
   if (!started) {
     initMethodStatistics();
     try {
       jmxNotificationManager.subscribe(
           FactoryName.createActiveObjectName(PAActiveObject.getBodyOnThis().getID()),
           this,
           FactoryName.getCompleteUrl(ProActiveRuntimeImpl.getProActiveRuntime().getURL()));
     } catch (IOException e) {
       throw new ProActiveRuntimeException(
           "JMX subscribtion for the MonitorController has failed", e);
     }
     started = true;
   }
 }