- synchronized private static final ActorSystem getOrCreateInstance(final BundleContext bundleContext) {
-
- if (actorSystem.get() != null){
- return actorSystem.get();
+ private static final ActorSystem getOrCreateInstance(final BundleContext bundleContext, ConfigurationReader configurationReader) {
+ ActorSystem ret = persistentActorSystem;
+ if (ret == null) {
+ synchronized (DistributedDataStoreFactory.class) {
+ ret = persistentActorSystem;
+ if (ret == null) {
+ // Create an OSGi bundle classloader for actor system
+ BundleDelegatingClassLoader classLoader = new BundleDelegatingClassLoader(bundleContext.getBundle(),
+ Thread.currentThread().getContextClassLoader());
+
+ ret = ActorSystem.create(ACTOR_SYSTEM_NAME,
+ ConfigFactory.load(configurationReader.read()).getConfig(CONFIGURATION_NAME), classLoader);
+ ret.actorOf(Props.create(TerminationMonitor.class), "termination-monitor");
+
+ persistentActorSystem = ret;
+ }
+ }