diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java index 795bbb53ff..2ed6e3a501 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java @@ -146,40 +146,18 @@ public class RemotingServiceImpl implements RemotingService, ServerConnectionLif this.flushExecutor = flushExecutor; ActiveMQServerLogger.LOGGER.addingProtocolSupport(coreProtocolManagerFactory.getProtocols()[0], coreProtocolManagerFactory.getModuleName()); - // this.protocolMap.put(coreProtocolManagerFactory.getProtocols()[0], coreProtocolManagerFactory.createProtocolManager(server, coreProtocolManagerFactory.filterInterceptors(incomingInterceptors), coreProtocolManagerFactory.filterInterceptors(outgoingInterceptors))); this.protocolMap.put(coreProtocolManagerFactory.getProtocols()[0], coreProtocolManagerFactory); if (config.isResolveProtocols()) { - resolveProtocols(server, this.getClass().getClassLoader()); + resolveProtocols(this.getClass().getClassLoader()); if (this.getClass().getClassLoader() != Thread.currentThread().getContextClassLoader()) { - resolveProtocols(server, Thread.currentThread().getContextClassLoader()); + resolveProtocols(Thread.currentThread().getContextClassLoader()); } } if (protocolManagerFactories != null) { - for (ProtocolManagerFactory protocolManagerFactory : protocolManagerFactories) { - String[] protocols = protocolManagerFactory.getProtocols(); - for (String protocolName : protocols) { - ActiveMQServerLogger.LOGGER.addingProtocolSupport(protocolName, protocolManagerFactory.getModuleName()); - // protocolMap.put(protocol, protocolManagerFactory.createProtocolManager(server, incomingInterceptors, outgoingInterceptors)); - protocolMap.put(protocolName, protocolManagerFactory); - } - } - } - } - - private void resolveProtocols(ActiveMQServer server, ClassLoader loader) { - ServiceLoader serviceLoader = ServiceLoader.load(ProtocolManagerFactory.class, loader); - if (serviceLoader != null) { - for (ProtocolManagerFactory next : serviceLoader) { - String[] protocols = next.getProtocols(); - for (String protocol : protocols) { - ActiveMQServerLogger.LOGGER.addingProtocolSupport(protocol, next.getModuleName()); - // protocolMap.put(protocol, next.createProtocolManager(server, next.filterInterceptors(incomingInterceptors), next.filterInterceptors(outgoingInterceptors))); - protocolMap.put(protocol, next); - } - } + loadProtocolManagerFactories(protocolManagerFactories); } } @@ -277,25 +255,6 @@ public class RemotingServiceImpl implements RemotingService, ServerConnectionLif started = true; } - private void locateProtocols(String protocolList, - Object transportConfig, - Map protocolMap) { - String[] protocolsSplit = protocolList.split(","); - - if (protocolsSplit != null) { - for (String protocolItem : protocolsSplit) { - ProtocolManagerFactory protocolManagerFactory = protocolMap.get(protocolItem); - - if (protocolManagerFactory == null) { - ActiveMQServerLogger.LOGGER.noProtocolManagerFound(protocolItem, transportConfig.toString()); - } - else { - protocolMap.put(protocolItem, protocolManagerFactory); - } - } - } - } - @Override public synchronized void startAcceptors() throws Exception { if (isStarted()) { @@ -742,4 +701,51 @@ public class RemotingServiceImpl implements RemotingService, ServerConnectionLif } } + /** + * Locates protocols from the internal default map and moves them into the input protocol map. + * + * @param protocolList + * @param transportConfig + * @param protocolMap + */ + private void locateProtocols(String protocolList, + Object transportConfig, + Map protocolMap) { + String[] protocolsSplit = protocolList.split(","); + + for (String protocolItem : protocolsSplit) { + ProtocolManagerFactory protocolManagerFactory = this.protocolMap.get(protocolItem); + + if (protocolManagerFactory == null) { + ActiveMQServerLogger.LOGGER.noProtocolManagerFound(protocolItem, transportConfig.toString()); + } + else { + protocolMap.put(protocolItem, protocolManagerFactory); + } + } + } + + /** + * Finds protocol support from a given classloader. + * @param loader + */ + private void resolveProtocols(ClassLoader loader) { + ServiceLoader serviceLoader = ServiceLoader.load(ProtocolManagerFactory.class, loader); + loadProtocolManagerFactories(serviceLoader); + } + + /** + * Loads the protocols found into a map. + * @param protocolManagerFactoryCollection + */ + private void loadProtocolManagerFactories(Iterable protocolManagerFactoryCollection) { + for (ProtocolManagerFactory next : protocolManagerFactoryCollection) { + String[] protocols = next.getProtocols(); + for (String protocol : protocols) { + ActiveMQServerLogger.LOGGER.addingProtocolSupport(protocol, next.getModuleName()); + protocolMap.put(protocol, next); + } + } + } + }