diff options
Diffstat (limited to 'qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java')
-rw-r--r-- | qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java | 141 |
1 files changed, 68 insertions, 73 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java index 9b576bf41f..e3fd938225 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java @@ -1,4 +1,4 @@ -package org.apache.qpid.server.virtualhost;/* +/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -18,18 +18,22 @@ package org.apache.qpid.server.virtualhost;/* * under the License. * */ +package org.apache.qpid.server.virtualhost; -import org.apache.qpid.server.configuration.VirtualHostConfiguration; +import java.util.HashMap; +import java.util.Map; + +import org.apache.qpid.server.logging.messages.ConfigStoreMessages; +import org.apache.qpid.server.logging.messages.MessageStoreMessages; import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.stats.StatisticsGatherer; + import org.apache.qpid.server.store.DurableConfigurationRecoverer; import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.DurableConfigurationStoreCreator; import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.store.MessageStoreCreator; -import org.apache.qpid.server.store.OperationalLoggingListener; -import org.apache.qpid.server.util.ServerScopedRuntimeException; public class StandardVirtualHost extends AbstractVirtualHost { @@ -37,69 +41,21 @@ public class StandardVirtualHost extends AbstractVirtualHost private DurableConfigurationStore _durableConfigurationStore; + private MessageStoreLogSubject _messageStoreLogSubject; + + private MessageStoreLogSubject _configurationStoreLogSubject; + StandardVirtualHost(VirtualHostRegistry virtualHostRegistry, StatisticsGatherer brokerStatisticsGatherer, org.apache.qpid.server.security.SecurityManager parentSecurityManager, - VirtualHostConfiguration hostConfig, VirtualHost virtualHost) - { - super(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, hostConfig, virtualHost); - } - - - - private MessageStore initialiseMessageStore(VirtualHostConfiguration hostConfig, VirtualHost virtualHost) + VirtualHost virtualHost) { - final Object storeTypeAttr = virtualHost.getAttribute(VirtualHost.STORE_TYPE); - String storeType = storeTypeAttr == null ? null : String.valueOf(storeTypeAttr); - MessageStore messageStore = null; - if (storeType == null) - { - try - { - final Class<?> clazz = Class.forName(hostConfig.getMessageStoreClass()); - final Object o = clazz.newInstance(); - - if (!(o instanceof MessageStore)) - { - throw new ClassCastException(clazz + " does not implement " + MessageStore.class); - } - - messageStore = (MessageStore) o; - } - catch (ClassNotFoundException e) - { - throw new ServerScopedRuntimeException("Failed to fina virtual host message store implementation, " + - "check the classpath and the configuration", e); - } - catch (InstantiationException e) - { - throw new ServerScopedRuntimeException("Failed to initialise virtual host store, " + - "check the configuration", e); - } - catch (IllegalAccessException e) - { - throw new ServerScopedRuntimeException("Failed to initialise virtual host store, " + - "check the configuration", e); - } - } - else - { - messageStore = new MessageStoreCreator().createMessageStore(storeType); - } - - final - MessageStoreLogSubject - storeLogSubject = new MessageStoreLogSubject(getName(), messageStore.getClass().getSimpleName()); - OperationalLoggingListener.listen(messageStore, storeLogSubject, getEventLogger()); - - return messageStore; + super(virtualHostRegistry, brokerStatisticsGatherer, parentSecurityManager, virtualHost); } - private DurableConfigurationStore initialiseConfigurationStore(VirtualHost virtualHost) + private DurableConfigurationStore initialiseConfigurationStore(String storeType) { DurableConfigurationStore configurationStore; - final Object storeTypeAttr = virtualHost.getAttribute(VirtualHost.CONFIG_STORE_TYPE); - String storeType = storeTypeAttr == null ? null : String.valueOf(storeTypeAttr); if(storeType != null) { @@ -117,24 +73,52 @@ public class StandardVirtualHost extends AbstractVirtualHost return configurationStore; } - - protected void initialiseStorage(VirtualHostConfiguration hostConfig, VirtualHost virtualHost) + @Override + protected void initialiseStorage(VirtualHost virtualHost) { - _messageStore = initialiseMessageStore(hostConfig, virtualHost); + Map<String, Object> messageStoreSettings = virtualHost.getMessageStoreSettings(); + String storeType = (String) messageStoreSettings.get(MessageStore.STORE_TYPE); + _messageStore = MessageStoreFactory.FACTORY_LOADER.get(storeType).createMessageStore(); + _messageStoreLogSubject = new MessageStoreLogSubject(getName(), _messageStore.getClass().getSimpleName()); + getEventLogger().message(_messageStoreLogSubject, MessageStoreMessages.CREATED()); + + Map<String, Object> configurationStoreSettings = virtualHost.getConfigurationStoreSettings(); + String configurationStoreType = configurationStoreSettings == null ? null : (String) configurationStoreSettings.get(DurableConfigurationStore.STORE_TYPE); + _durableConfigurationStore = initialiseConfigurationStore(configurationStoreType); + boolean combinedStores = _durableConfigurationStore == _messageStore; + if (combinedStores) + { + configurationStoreSettings = new HashMap<String,Object>(messageStoreSettings); + configurationStoreSettings.put(DurableConfigurationStore.IS_MESSAGE_STORE_TOO, true); + } + + if (!combinedStores) + { + _configurationStoreLogSubject = new MessageStoreLogSubject(getName(), _durableConfigurationStore.getClass().getSimpleName()); + getEventLogger().message(_configurationStoreLogSubject, ConfigStoreMessages.CREATED()); + } - _durableConfigurationStore = initialiseConfigurationStore(virtualHost); + _durableConfigurationStore.openConfigurationStore(virtualHost, configurationStoreSettings); - DurableConfigurationRecoverer configRecoverer = - new DurableConfigurationRecoverer(getName(), getDurableConfigurationRecoverers(), - new DefaultUpgraderProvider(this, getExchangeRegistry()), getEventLogger()); - _durableConfigurationStore.configureConfigStore(virtualHost, configRecoverer); + _messageStore.openMessageStore(virtualHost, virtualHost.getMessageStoreSettings()); + + getEventLogger().message(_messageStoreLogSubject, MessageStoreMessages.STORE_LOCATION(_messageStore.getStoreLocation())); + + if (_configurationStoreLogSubject != null) + { + getEventLogger().message(_configurationStoreLogSubject, ConfigStoreMessages.STORE_LOCATION(configurationStoreSettings.toString())); + } - VirtualHostConfigRecoveryHandler recoveryHandler = new VirtualHostConfigRecoveryHandler(this); - _messageStore.configureMessageStore(virtualHost, recoveryHandler, recoveryHandler); + DurableConfigurationRecoverer configRecoverer = new DurableConfigurationRecoverer(getName(), getDurableConfigurationRecoverers(), + new DefaultUpgraderProvider(this), getEventLogger()); - initialiseModel(hostConfig); + _durableConfigurationStore.recoverConfigurationStore(configRecoverer); - _messageStore.activate(); + // If store does not have entries for standard exchanges (amq.*), the following will create them. + initialiseModel(); + + VirtualHostConfigRecoveryHandler recoveryHandler = new VirtualHostConfigRecoveryHandler(this, getMessageStoreLogSubject()); + _messageStore.recoverMessageStore(recoveryHandler, recoveryHandler); attainActivation(); } @@ -151,4 +135,15 @@ public class StandardVirtualHost extends AbstractVirtualHost return _durableConfigurationStore; } -} + @Override + protected MessageStoreLogSubject getMessageStoreLogSubject() + { + return _messageStoreLogSubject; + } + + @Override + protected MessageStoreLogSubject getConfigurationStoreLogSubject() + { + return _configurationStoreLogSubject; + } +}
\ No newline at end of file |