X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2FRemoteRpcProviderFactory.java;h=d17242ed6048f51638d11612db130c2d62f33961;hp=0e6b795c058877069640a848fe1144575db37443;hb=86024f5f5c072e38b51e8367226ad166e3f42d0f;hpb=0875a6258aa459ccf558529bdf1524c7c8986c54 diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcProviderFactory.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcProviderFactory.java index 0e6b795c05..d17242ed60 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcProviderFactory.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcProviderFactory.java @@ -8,19 +8,44 @@ package org.opendaylight.controller.remote.rpc; - -import org.opendaylight.controller.remote.rpc.utils.DefaultAkkaConfigurationReader; +import akka.actor.ActorSystem; +import akka.osgi.BundleDelegatingClassLoader; +import com.typesafe.config.Config; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService; import org.opendaylight.controller.sal.core.api.Broker; -import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; import org.osgi.framework.BundleContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class RemoteRpcProviderFactory { - public static RemoteRpcProvider createInstance(final Broker broker, final BundleContext bundleContext){ + private static final Logger LOG = LoggerFactory.getLogger(RemoteRpcProviderFactory.class); + + public static RemoteRpcProvider createInstance( + final Broker broker, final BundleContext bundleContext, final RemoteRpcProviderConfig config){ + + final RemoteRpcProvider rpcProvider = + new RemoteRpcProvider(createActorSystem(bundleContext, config), (DOMRpcProviderService) broker); - ActorSystemFactory.createInstance(bundleContext, new DefaultAkkaConfigurationReader()); - RemoteRpcProvider rpcProvider = - new RemoteRpcProvider(ActorSystemFactory.getInstance(), (RpcProvisionRegistry) broker); broker.registerProvider(rpcProvider); return rpcProvider; } + + private static ActorSystem createActorSystem(final BundleContext bundleContext, final RemoteRpcProviderConfig config){ + + // Create an OSGi bundle classloader for actor system + final BundleDelegatingClassLoader classLoader = + new BundleDelegatingClassLoader(bundleContext.getBundle(), + Thread.currentThread().getContextClassLoader()); + + final Config actorSystemConfig = config.get(); + if(LOG.isDebugEnabled()) { + LOG.debug("Actor system configuration\n{}", actorSystemConfig.root().render()); + } + if (config.isMetricCaptureEnabled()) { + LOG.info("Instrumentation is enabled in actor system {}. Metrics can be viewed in JMX console.", + config.getActorSystemName()); + } + + return ActorSystem.create(config.getActorSystemName(), actorSystemConfig, classLoader); + } }