Как установить переменные окружения в plcaeholder для apche commons
Я пытаюсь подставить переменную среды в мой файл определения. Здесь properties.xml
файл:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<header>
<result throwExceptionOnMissing="true">
<nodeCombiner
config-class="org.apache.commons.configuration2.tree.OverrideCombiner" />
</result>
</header>
<override>
<env config-name="config" config-optional="true" env="${env}" />
<properties fileName="default.properties" config-name="default"
throwExceptionOnMissing="true" />
</override>
</configuration>
Затем я пытаюсь создать комбинированную конфигурацию и подставить переменную среды в мою properties.xml
во время выполнения. Ниже приведен код:
public class CombineConfiguration {
public void createCombinedConfiguration() throws ConfigurationException, ParserConfigurationException {
Parameters params = new Parameters();
CombinedConfigurationBuilder builder = new CombinedConfigurationBuilder();
builder.configure(params.fileBased().setFile(new File("properties.xml")));
String env = System.getProperty("env");
builder.getConfiguration().setProperty("config-name", env);
CombinedConfiguration config = new CombinedConfiguration();
config.addConfiguration(builder.getConfiguration());
config.setProperty("config-name", env);
System.out.println(config.getProperty("config"));
//System.out.println(config.getProperty("config"));
}
public static void main(String[] args) throws ConfigurationException, ParserConfigurationException {
CombineConfiguration ob = new CombineConfiguration();
ob.createCombinedConfiguration();
}
}
Однако я получаю следующее исключение:
java.beans.IntrospectionException: неправильный метод записи Количество аргументов: public final void org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object) в java.beans.PropertyDescriptor.findPropertyType(PropertyDescriptor.java:657) ~[na:1.8.0_131] в java.beans.PropertyDescriptor.setWriteMethod(PropertyDescriptor.java:327) ~[na:1.8.0_131] в java.beans.PropertyDescriptor.(PropertyDescriptor.java:139) ~[na:1.8.0_131] at org.apache.commons.beanutils.FluentPropertyBeanIntrospector.createFluentPropertyDescritor(FluentPropertyBeanIntrospector.java:178) ~[commons-beanutils-1.9.3.jar:1.9.3utils или 1.9.3ugs.gar или.FluentPropertyBeanIntrospector. -1.9.3.jar:1.9.3] at org.apache.commons.beanutils.PropertyUtilsBean.getIntrospectionData(PropertyUtilsBean.java:2226) [commons-beanutils-1.9.3.jar:1.9.3] в org.apache.commons.beanutils.PropertyUtilsBean.getPropertyDescriptor(PropertyUtilsBean.java:954) [commons-beanutils-1.9.3.jar:1.9.3] в org.apache.commons.beanutils.PropertyUtilsBean.isWriteable(PropertyUtilsBean.java:1478) [commons-beanutils-1.9.3.jar:1.9.3] в org.apache.commons.configuration2.beanutils.BeanHelper.isPropertyWriteable(BeanHelper.java:521) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper.initProperty(BeanHelper.java:357) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper.initBeanProperties(BeanHelper.java:273) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper.initBean(BeanHelper.java:192) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper$BeanCreationContextImpl.initBeanan (.java:669) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.DefaultBeanFactory.initBeanInstance(DefaultBeanFactory.java:162) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.DefaultBeanFactory.createBean(DefaultBeanFactory.java:116) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:459) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:479) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:492) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResultInstance(BasicConfjavaBu):447) [commons-configuration2-2.1.1.jar:2.1.1] по адресу org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResult(BasicConfigurationBuilder.java:417) [commons-configuration2-2.1.1.jar:2.1.1] в org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getConfiguration(BasicConfigurationBuilder.java:285) [commons-configuration2-2.1.1.jar:2.1.1] в java1.CombineConfiguration.createCombinedConfiguration(CombineConfiguration.java:25) [classes/:na] в java1.CombineConfiguration.main(CombineConfiguration.java:38) [classes/:na] Исключение в потоке "main" org.apache.commons.configuration2.ex.ConfigurationException: org.apache.commons.configuration2.ex.ConfigurationRuntimeException: свойство env нельзя установить для org.apache.commons.configuration2.builder.combined.MultiWrapDynaBean по адресу org.apache.commons.configuration2.builder.combined.BaseConfigurationBuilderProvider.getConfigurationBuilder(BaseConfigurationBuilderProvider.java:189) по адресу org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder$ConfigurationSourceData.createConfigurationBuilder(CombinedConfigurationBuilder.java:1527) в org.ap строении. r.combined. Combined.CombinedConfigurationBuilder. java: 285) в java1.CombineConfiguration.createCombinedConfiguration (CombineConfiguration.java:25) в java1.CombineConfiguration.main (CombineConfiguration.java:38), вызванный: org.apache.commons.configuration2.ex.ConfigurationRuntimeException: свойство env не может быть установлено на org.apache.commons.configuration2.builder.combined.MultiWrapDynaBean на org.apache.commons.configuration2.beanutils.BeanHelper.initProperty(BeanHelper.java:360) в org.apache.commons.configuration2.beanutils.BeanHelper.initBeanProperties (BeanHelper.java:273) в org.apache.commons.consbean2.u. BeanHelper.initBean (BeanHelper.java:192) по адресу org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder.initBean(CombinedConfigurationBuilder.java:1046) по адресу org.apache.commons.configuration2.builder.combj. BaseConfigurationBuilderProvider.java:248) at org.apache.commons.configuration2.builder.combined.BaseConfigurationBuilderProvider.getConfigurationBuilder(BaseConfigurationBuilderProvider.java:177) ... еще 8
Может кто-нибудь указать, что мне не хватает? Заранее спасибо.