Introduce OSGi sub framework with shared class loaders
[lgpl/argeo-commons.git] / org.argeo.init / src / org / argeo / init / osgi / OsgiRuntimeContext.java
index ecfeca74ee839a66b8b1df9dd9f9539752f79d9a..2914be38a75eac6af5e787a6fcca3820ff226b19 100644 (file)
@@ -14,7 +14,6 @@ import java.util.function.Consumer;
 import java.util.function.Supplier;
 
 import org.argeo.api.init.RuntimeContext;
-import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.Constants;
@@ -28,7 +27,7 @@ public class OsgiRuntimeContext implements RuntimeContext, AutoCloseable {
        private final static long STOP_FOR_UPDATE_TIMEOUT = 60 * 1000;
        private final static long CLOSE_TIMEOUT = 60 * 1000;
 
-       private final static String SYMBOLIC_NAME_FELIX_SCR = "org.apache.felix.scr";
+       // private final static String SYMBOLIC_NAME_FELIX_SCR = "org.apache.felix.scr";
 
        private Map<String, String> config;
        private Framework framework;
@@ -96,12 +95,21 @@ public class OsgiRuntimeContext implements RuntimeContext, AutoCloseable {
                }
                OsgiBoot osgiBoot = new OsgiBoot(bundleContext);
                String frameworkUuuid = bundleContext.getProperty(Constants.FRAMEWORK_UUID);
-               new Thread("OSGi boot framework " + frameworkUuuid) {
+
+               // separate thread in order to improve logging
+               Thread osgiBootThread = new Thread("OSGi boot framework " + frameworkUuuid) {
                        @Override
                        public void run() {
-                               osgiBoot.bootstrap(config);
+                               osgiBoot.bootstrap();
                        }
-               }.start();
+               };
+               osgiBootThread.start();
+               // TODO return a completable stage so that inits can run in parallel
+//             try {
+//                     osgiBootThread.join(60 * 1000);
+//             } catch (InterruptedException e) {
+//                     // silent
+//             }
        }
 
        public void update() {