Bundle-Name: MyDebugger Bundle-Version: 1.0.0 Debug-Provider: org.example.mydebugger.provider.MyDebuggerProvider package org.example.mydebugger.provider; import org.osgi.service.log.LogService; import org.osgi.util.tracker.ServiceTracker; import org.osgi.util.tracker.ServiceTrackerCustomizer; import org.osgi.framework.BundleContext; public class MyDebuggerProvider implements DebugProvider { private LogService logService; public MyDebuggerProvider(BundleContext context) { ServiceTracker<LogService, LogService> logServiceTracker = new ServiceTracker<>(context, LogService.class, new ServiceTrackerCustomizer<LogService, LogService>() { @Override public LogService addingService(ServiceReference<LogService> reference) { logService = context.getService(reference); return logService; } @Override public void modifiedService(ServiceReference<LogService> reference, LogService service) { } @Override public void removedService(ServiceReference<LogService> reference, LogService service) { logService = null; } }); logServiceTracker.open(); } @Override public void debug(String message) { logService.log(LogService.LOG_DEBUG, message); } } import org.example.mydebugger.provider.MyDebuggerProvider; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceReference; public class MyApp { public static void main(String[] args) { BundleContext context = FrameworkUtil.getBundle(MyApp.class).getBundleContext(); ServiceReference<DebugProvider> providerRef = context.getServiceReference(DebugProvider.class); DebugProvider provider = context.getService(providerRef); provider.debug("Debugging message"); } }


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