<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>1.7.0</version>
</dependency>
import org.osgi.service.startlevel.StartLevel;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
@Component
public class StartLevelManager {
@Reference
private StartLevel startLevel;
public void setBundleStartLevel(int bundleId, int startLevel) {
startLevel.setBundleStartLevel(bundleId, startLevel);
}
public void startBundle(int bundleId) {
startLevel.setBundleStartLevel(bundleId, StartLevel.BUNDLE_ACTIVE);
}
public void stopBundle(int bundleId) {
startLevel.setBundleStartLevel(bundleId, StartLevel.BUNDLE_RESOLVED);
}
}
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Deactivate;
@Component
public class MyApp {
private StartLevelManager startLevelManager;
@Activate
public void activate(BundleContext bundleContext) {
startLevelManager = new StartLevelManager();
FrameworkUtil.getBundle(this.getClass()).getBundleContext()
.getServiceReference(StartLevel.class);
startLevelManager.setBundleStartLevel(1, 5);
startLevelManager.startBundle(1);
}
@Deactivate
public void deactivate() {
startLevelManager.stopBundle(1);
}
}