Database Apache数据库配置不支持';无法使用MapConfiguration
我正在尝试将mapConfiguration(带有属性的文件)与databaseConfiguration结合起来。但是,只能查找文件属性,而不能查找数据库属性。我做错了什么Database Apache数据库配置不支持';无法使用MapConfiguration,database,apache,properties,configuration,Database,Apache,Properties,Configuration,我正在尝试将mapConfiguration(带有属性的文件)与databaseConfiguration结合起来。但是,只能查找文件属性,而不能查找数据库属性。我做错了什么 public class MapConfigProvider extends ConfigurationProvider { Map properties = null; public MapConfigProvider(Map inProps) { super(MapConfigurati
public class MapConfigProvider extends ConfigurationProvider {
Map properties = null;
public MapConfigProvider(Map inProps) {
super(MapConfiguration.class);
properties = inProps;
}
@Override
public AbstractConfiguration getConfiguration(ConfigurationDeclaration decl) throws Exception {
MapConfiguration mapConfig = new MapConfiguration(properties);
return mapConfig;
}
}
private静态最终映射属性Map=newhashmap();
DefaultConfigurationBuilder=新的DefaultConfigurationBuilder(propFileUrl);
builder.addConfigurationProvider(“基于文件”,新的MapConfigProvider(propertiesMap));
builder.addConfigurationProvider(“ctkdatabase”,新数据库配置提供程序(databaseConfigDef));
CombinedConfiguration combinedConfig=builder.getConfiguration(true);
String prop1=combinedConfig.getString(“WCM_Web服务_端口”)//从DB中,获取null
String prop2=combinedConfig.getString(“temp”)//从文件中,获取良好的
记录器信息(prop1+prop2);
我做错了什么?请帮助。1)在propFileUrl:mainconfig.xml中,我必须指定一个
<configuration>
<header>
<result delimiterParsingDisabled="true" forceReloadCheck="false">
<nodeCombiner config-class="org.apache.commons.configuration.tree.OverrideCombiner" />
<expressionEngine config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine" />
</result>
</header>
<system /> <!-- load system properties into config -->
<properties fileName="common/datasources.properties" />
<properties fileName="application.properties" />
<ctkdatabase jndi="jdbc/shaDs" table="TABLE_APPL_PROPERTIES" keyColumn="PROP_NAME" valueColumn="PROP_VALUE"/>
<!-- load host's config file -->
<xml fileName="app/cluster/datasources.xml" />
</configuration>
private static final Map<String, Object> propertiesMap= new HashMap<String, Object>();
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(propFileUrl);
builder.addConfigurationProvider("filebased", new MapConfigProvider(propertiesMap));
builder.addConfigurationProvider("ctkdatabase", new DatabaseConfigurationProvider(databaseConfigDef));
CombinedConfiguration combinedConfig = builder.getConfiguration(true);
String prop1 = combinedConfig.getString("WCM_WEBSERVICE_PORT"); //From DB, gets null
String prop2 = combinedConfig.getString("temp"); //From file, fetches good
LOGGER.info(prop1 + prop2);
<configuration>
<header>
<result delimiterParsingDisabled="true" forceReloadCheck="false">
<nodeCombiner config-class="org.apache.commons.configuration.tree.OverrideCombiner" />
<expressionEngine config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine" />
</result>
</header>
<system /> <!-- load system properties into config -->
<properties fileName="common/datasources.properties" />
<properties fileName="application.properties" />
<ctkdatabase jndi="jdbc/shaDs" table="TABLE_APPL_PROPERTIES" keyColumn="PROP_NAME" valueColumn="PROP_VALUE"/>
<!-- load host's config file -->
<xml fileName="app/cluster/datasources.xml" />
</configuration>
@Override
public AbstractConfiguration getConfiguration(ConfigurationDeclaration decl) throws Exception {
DatabaseConfigDef def = (DatabaseConfigDef)createBean(DatabaseConfigDef.class, decl, null);
Context env = (Context) new InitialContext().lookup("java:comp/env");
DataSource ds = (DataSource)env.lookup((def.getJndi()));
return new DatabaseConfiguration(ds, def.getTable(), def.getKeyColumn(), def.getValueColumn());
}