You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2015/06/17 20:00:13 UTC
[2/2] activemq-artemis git commit: ARTEMIS-90 add acceptor factory to
service registry
ARTEMIS-90 add acceptor factory to service registry
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/f60950cd
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/f60950cd
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/f60950cd
Branch: refs/heads/master
Commit: f60950cd3db9ada2199846f6128f844da678e5b8
Parents: 61bd181
Author: jbertram <jb...@apache.org>
Authored: Wed Jun 17 10:37:07 2015 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Wed Jun 17 13:59:51 2015 -0400
----------------------------------------------------------------------
.../server/impl/RemotingServiceImpl.java | 6 +---
.../artemis/core/server/ServiceRegistry.java | 5 +++
.../core/server/impl/ServiceRegistryImpl.java | 34 ++++++++++++++++++++
3 files changed, 40 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f60950cd/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
----------------------------------------------------------------------
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 c5680ee..b7fca3f 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
@@ -229,15 +229,11 @@ public class RemotingServiceImpl implements RemotingService, ConnectionLifeCycle
threadPool = Executors.newCachedThreadPool(tFactory);
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
-
for (TransportConfiguration info : acceptorsConfig)
{
try
{
- Class<?> clazz = loader.loadClass(info.getFactoryClassName());
-
- AcceptorFactory factory = (AcceptorFactory) clazz.newInstance();
+ AcceptorFactory factory = server.getServiceRegistry().getAcceptorFactory(info.getName(), info.getFactoryClassName());
Map<String, ProtocolManager> supportedProtocols = new ConcurrentHashMap();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f60950cd/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServiceRegistry.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServiceRegistry.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServiceRegistry.java
index 41dd06d..f6a4cfa 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServiceRegistry.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServiceRegistry.java
@@ -20,6 +20,7 @@ import org.apache.activemq.artemis.api.core.Interceptor;
import org.apache.activemq.artemis.api.core.Pair;
import org.apache.activemq.artemis.core.config.ConnectorServiceConfiguration;
import org.apache.activemq.artemis.core.server.cluster.Transformer;
+import org.apache.activemq.artemis.spi.core.remoting.AcceptorFactory;
import java.util.Collection;
import java.util.concurrent.ExecutorService;
@@ -63,4 +64,8 @@ public interface ServiceRegistry
Transformer getDivertTransformer(String name);
Transformer getBridgeTransformer(String name);
+
+ AcceptorFactory getAcceptorFactory(String name, String className);
+
+ void addAcceptorFactory(String name, AcceptorFactory acceptorFactory);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f60950cd/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServiceRegistryImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServiceRegistryImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServiceRegistryImpl.java
index f0825dc..26ee8d9 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServiceRegistryImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServiceRegistryImpl.java
@@ -16,6 +16,8 @@
*/
package org.apache.activemq.artemis.core.server.impl;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@@ -29,6 +31,8 @@ import org.apache.activemq.artemis.core.config.ConnectorServiceConfiguration;
import org.apache.activemq.artemis.core.server.ConnectorServiceFactory;
import org.apache.activemq.artemis.core.server.ServiceRegistry;
import org.apache.activemq.artemis.core.server.cluster.Transformer;
+import org.apache.activemq.artemis.spi.core.remoting.AcceptorFactory;
+import org.apache.activemq.artemis.utils.ClassloadingUtil;
public class ServiceRegistryImpl implements ServiceRegistry
{
@@ -47,6 +51,8 @@ public class ServiceRegistryImpl implements ServiceRegistry
private Map<String, Transformer> bridgeTransformers;
+ private Map<String, AcceptorFactory> acceptorFactories;
+
private Map<String, Pair<ConnectorServiceFactory, ConnectorServiceConfiguration>> connectorServices;
public ServiceRegistryImpl()
@@ -56,6 +62,7 @@ public class ServiceRegistryImpl implements ServiceRegistry
this.connectorServices = new ConcurrentHashMap<>();
this.divertTransformers = new ConcurrentHashMap<>();
this.bridgeTransformers = new ConcurrentHashMap<>();
+ this.acceptorFactories = new ConcurrentHashMap<>();
}
public ExecutorService getExecutorService()
@@ -153,4 +160,31 @@ public class ServiceRegistryImpl implements ServiceRegistry
{
return bridgeTransformers.get(name);
}
+
+ @Override
+ public AcceptorFactory getAcceptorFactory(String name, final String className)
+ {
+ AcceptorFactory factory = acceptorFactories.get(name);
+
+ if (factory == null)
+ {
+ factory = AccessController.doPrivileged(new PrivilegedAction<AcceptorFactory>()
+ {
+ public AcceptorFactory run()
+ {
+ return (AcceptorFactory) ClassloadingUtil.newInstanceFromClassLoader(className);
+ }
+ });
+
+ addAcceptorFactory(name, factory);
+ }
+
+ return factory;
+ }
+
+ @Override
+ public void addAcceptorFactory(String name, AcceptorFactory acceptorFactory)
+ {
+ acceptorFactories.put(name, acceptorFactory);
+ }
}