import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.packageadmin.PackageAdmin;
public class BundleManager {
private BundleContext bundleContext;
public void installBundle(String location) throws BundleException {
ServiceReference<PackageAdmin> packageAdminRef = bundleContext.getServiceReference(PackageAdmin.class);
PackageAdmin packageAdmin = bundleContext.getService(packageAdminRef);
synchronized (packageAdmin) {
packageAdmin.resolveBundles(null);
packageAdmin.installBundle(location);
}
}
public void uninstallBundle(long bundleId) throws BundleException {
ServiceReference<PackageAdmin> packageAdminRef = bundleContext.getServiceReference(PackageAdmin.class);
PackageAdmin packageAdmin = bundleContext.getService(packageAdminRef);
synchronized (packageAdmin) {
packageAdmin.resolveBundles(null);
packageAdmin.uninstallBundle(bundleId);
}
}
}
<config>
<packageadmin>
<provisionbundles>
<provisionbundle>
<location>bundle1.jar</location>
<startlevel>5</startlevel>
</provisionbundle>
<provisionbundle>
<location>bundle2.jar</location>
<startlevel>8</startlevel>
</provisionbundle>
</provisionbundles>
</packageadmin>
</config>