Database Apache数据库配置不支持';无法使用MapConfiguration

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

我正在尝试将mapConfiguration(带有属性的文件)与databaseConfiguration结合起来。但是,只能查找文件属性,而不能查找数据库属性。我做错了什么

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());
}