- ServiceLoader<FrameworkFactory> sl = ServiceLoader.load(FrameworkFactory.class);
- Optional<FrameworkFactory> opt = sl.findFirst();
- if (opt.isEmpty())
- throw new IllegalStateException("Cannot find OSGi framework");
- framework = opt.get().newFramework(config);
+ if (framework != null && framework.getState() >= Framework.STARTING)
+ throw new IllegalStateException("OSGi framework is already started");
+
+ if (framework == null) {
+ ServiceLoader<FrameworkFactory> sl = ServiceLoader.load(FrameworkFactory.class);
+ Optional<FrameworkFactory> opt = sl.findFirst();
+ if (opt.isEmpty())
+ throw new IllegalStateException("Cannot find OSGi framework");
+ framework = opt.get().newFramework(config);
+ }
+