shutdownLogger = (ShutdownLogger)mbeanServer. getAttribute(shutdownLoggerObjectName, "Instance");
   public synchronized void startService() throws Exception   {      try      {         if (started)         {            return;         }                  log.debug(this + " starting");                  if (queuedExecutorPoolSize < 1)         {            throw new IllegalArgumentException("queuedExecutorPoolSize must be > 0");         }         queuedExecutorPool = new QueuedExecutorPool(queuedExecutorPoolSize);                     loadClientAOPConfig();            loadServerAOPConfig();            MBeanServer mbeanServer = getServer();            // Acquire references to plugins. Each plug-in will be accessed directly via a reference         // circumventing the MBeanServer. However, they are installed as services to take advantage         // of their automatically-creating management interface.            persistenceManager = (PersistenceManager)mbeanServer.            getAttribute(persistenceManagerObjectName, "Instance");         jmsUserManager = (JMSUserManager)mbeanServer.            getAttribute(jmsUserManagerObjectName, "Instance");                  shutdownLogger = (ShutdownLogger)mbeanServer.            getAttribute(shutdownLoggerObjectName, "Instance");                  //We get references to some plugins lazily to avoid problems with circular         //MBean dependencies                     // Create the wired components         messageIdManager = new IdManager("MESSAGE_ID", 4096, persistenceManager);         channelIdManager = new IdManager("CHANNEL_ID", 10, persistenceManager);         transactionIdManager = new IdManager("TRANSACTION_ID", 1024, persistenceManager);         destinationJNDIMapper = new DestinationJNDIMapper(this);         connFactoryJNDIMapper = new ConnectionFactoryJNDIMapper(this);         connectionManager = new SimpleConnectionManager();         connectorManager = new SimpleConnectorManager();         memoryManager = new SimpleMemoryManager();         messageStore = new SimpleMessageStore();                  txRepository = new TransactionRepository(persistenceManager, transactionIdManager);          // Start the wired components            messageIdManager.start();         channelIdManager.start();         transactionIdManager.start();         destinationJNDIMapper.start();         connFactoryJNDIMapper.start();         connectionManager.start();         connectorManager.start();                  memoryManager.start();         messageStore.start();         securityStore.start();         txRepository.start();                  //Did the server crash last time?                  //TODO do we need this?         crashed = shutdownLogger.startup(serverPeerID);                                     initializeRemoting(mbeanServer);            //createRecoverable();            started = true;            log.info("JBoss Messaging " + getVersion().getProviderVersion() + " server [" +            getServerPeerID()+ "] started");            }      catch (Throwable t)      {         throw ExceptionUtil.handleJMXInvocation(t, this + " startService");      }    }