OSGi 应用配置:多服务、日志与元数据管理
1. 多服务配置
在处理服务配置时,若 updated()
方法接收到空参数,提前为通知代理服务预定义一组 PID 的方式存在局限性。更好的解决方案是使用托管服务工厂,它允许从相同的配置模式创建多个服务。
例如,对于通知代理服务,使用托管服务工厂可以为每个配置的端口创建不同的服务,而非多次更改单个服务的端口。
托管服务工厂与托管服务的主要区别在于,前者中配置管理服务会为每个新配置创建一个唯一的 PID,该 PID 与托管服务工厂注册的原始 PID 相关联。
1.1 配置包以支持配置工厂
以下是支持托管工厂的配置包的相关代码:
ServiceReference serviceReference =
bundleContext.getServiceReference(ConfigurationAdmin.class.getName());
ConfigurationAdmin configAdmin =
(ConfigurationAdmin) bundleContext.getService(serviceReference);
Configuration configuration =
configAdmin.createFactoryConfiguration(
"manning.osgi.notification.broker");
Dictionary<String, Object> configProperties