为服务编写代码来接收配置属性

通过激活方法上提供的 org.osgi.service.component.ComponentContext 对象来提供配置属性。

开始之前

您必须完成使服务与持久存储的身份相关联中所描述的任务。

关于此任务

如果在激活之后更新了属性,那么用于注入的方法取决于服务在其 OSGi 声明式服务 (DS) 声明中提供的上下文。

通常,最好是通过在服务声明上使用 modified 属性来声明要专门用于注入所更新属性的方法。如果修改的方法不可用,那么 DS 会取消激活服务,然后使用新属性来重新激活服务。

取消激活某项服务之后再将其激活,这还可能导致重新启动从属服务,因此,除非明确要求执行此操作,否则应该避免此操作。使用 modified 属性是接收配置更新的首选方法。

示例

在先前任务使服务与持久存储的身份相关联中,您给 DS 定义了服务。下面举例说明了该任务中所描述 DS 声明内的 activate 和 modified 方法。
private static Dictionary<String, Object> _props = null;

    protected void activate(ComponentContext cc) {
        _props = cc.getProperties();
    }

    protected void modified(Map<?, ?> newProperties) {
        if (newProperties instanceof Dictionary) {
            _props = (Dictionary<String, Object>) newProperties;
                } else {
            _props = new Hashtable(newProperties);
        }
    }
从配置属性获取值时,请使用下列机制来允许一些灵活性:
  • 编写方法代码以要求同一个捆绑软件所随附的至少一个缺省属性,但允许用户覆盖,以免迁移用户配置。
  • 忽略多余或无法识别的属性。
服务必须能够单独操作缺省配置。为了提供合理级别的功能,用户覆盖不得是必需的。

用于指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_setup_service_getprops
文件名:twlp_setup_service_getprops.html