|
Akka/Scala example source code file (OsgiActorSystemFactory.scala)
The OsgiActorSystemFactory.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.osgi import akka.actor.ActorSystem import com.typesafe.config.{ ConfigFactory, Config } import org.osgi.framework.BundleContext import java.io.File /** * Factory class to create ActorSystem implementations in an OSGi environment. This mainly involves dealing with * bundle classloaders appropriately to ensure that configuration files and classes get loaded properly */ class OsgiActorSystemFactory(val context: BundleContext, val fallbackClassLoader: Option[ClassLoader], config: Config = ConfigFactory.empty) { /* * Classloader that delegates to the bundle for which the factory is creating an ActorSystem */ private val classloader = BundleDelegatingClassLoader(context, fallbackClassLoader) /** * Creates the [[akka.actor.ActorSystem]], using the name specified */ def createActorSystem(name: String): ActorSystem = createActorSystem(Option(name)) /** * Creates the [[akka.actor.ActorSystem]], using the name specified. * * A default name (`bundle-<bundle id>-ActorSystem`) is assigned when you pass along [[scala.None]] instead. */ def createActorSystem(name: Option[String]): ActorSystem = ActorSystem(actorSystemName(name), actorSystemConfig(context), classloader) /** * Strategy method to create the Config for the ActorSystem * ensuring that the default/reference configuration is loaded from the akka-actor bundle. * Configuration files found in akka-actor bundle */ def actorSystemConfig(context: BundleContext): Config = { config.withFallback(ConfigFactory.load(classloader).withFallback(ConfigFactory.defaultReference(OsgiActorSystemFactory.akkaActorClassLoader))) } /** * Determine the name for the [[akka.actor.ActorSystem]] * Returns a default value of `bundle-<bundle id>-ActorSystem` is no name is being specified */ def actorSystemName(name: Option[String]): String = name.getOrElse("bundle-%s-ActorSystem".format(context.getBundle.getBundleId)) } object OsgiActorSystemFactory { /** * Class loader of akka-actor bundle. */ def akkaActorClassLoader = classOf[ActorSystemActivator].getClassLoader /* * Create an [[OsgiActorSystemFactory]] instance to set up Akka in an OSGi environment */ def apply(context: BundleContext, config: Config): OsgiActorSystemFactory = new OsgiActorSystemFactory(context, Some(akkaActorClassLoader), config) } Other Akka source code examplesHere is a short list of links related to this Akka OsgiActorSystemFactory.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.