我创建了ConfigAdmin,加载了一些属性。之后,我保存了它们。我的问题是:如何获取已存储的属性?
我已经在Activator.java中创建了ConfigAdmin:
public class Activator implements BundleActivator {
private String configFile = "API.properties";
@Override
public void start(BundleContext bundleContext) throws Exception {
InputStream stream = (bundleContext.getBundle().getResource(configFile)).openStream();
Properties properties = new Properties();
properties.load(stream);
createConfigAdmin(properties);
}
@Override
public void stop(BundleContext bundleContext) throws Exception {
}
private boolean createConfigAdmin(Properties properties, BundleContext context) {
try {
Dictionary<String, String> props = new Hashtable<String, String>();
ServiceReference reference = context.getServiceReference(ConfigurationAdmin.class.getName());
ConfigurationAdmin admin = (ConfigurationAdmin) context.getService(reference);
Configuration configuration = admin.createFactoryConfiguration(pid.configAdminPID, null);
for(final String name: properties.stringPropertyNames())
props.put(name, properties.getProperty(name));
configuration.update(props);
return true;
} catch(Exception e)
{
e.printStackTrace();
return false;
}
}
}
最佳答案
您是否真的打算创建工厂配置?仅当您要为同一工厂pid创建多个配置时才需要它。
如果您只是想创建一个简单的配置,则只需使用admin.getConfiguration(oid)即可以与现在相同的方式更新配置。
如果您以后要阅读配置,只需再次获取即可。如果要使用此配置配置捆绑包,通常将创建一个ManagedService并将其发布。见http://liquid-reality.de/display/liquid/2011/09/23/Karaf+Tutorial+Part+2+-+Using+the+Configuration+Admin+Service