import org.osgi.framework.BundleContext; import org.osgi.framework.PackageAdmin; import org.osgi.framework.ServiceReference; public class ModuleManager { private BundleContext bundleContext; private PackageAdmin packageAdmin; public void start() { ServiceReference packageAdminRef = bundleContext.getServiceReference(PackageAdmin.class.getName()); packageAdmin = (PackageAdmin) bundleContext.getService(packageAdminRef); packageAdmin.resolveBundles(null); checkDependencies(); } private void checkDependencies() { Bundle[] bundles = bundleContext.getBundles(); for (Bundle bundle : bundles) { RequiredBundle[] dependencies = packageAdmin.getRequiredBundles(bundle.getSymbolicName()); for (RequiredBundle dependency : dependencies) { if (!dependency.isRemovalPending() && dependency.getBundle() == null) { packageAdmin.resolveBundles(new Bundle[]{dependency.getBundle()}); } } } } public void stop() { bundleContext.ungetService(bundleContext.getServiceReference(PackageAdmin.class.getName())); } }


上一篇:
下一篇:
切换中文