Я хочу разрешить переменную системной среды, используя Spring Expression Language в файле конфигурации сервлета spring. Мой первый подход был:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.#{systemEnvironment.THREAD_ENV}.properties" />
Это исключение ниже:
Caused by: org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 18): Field or property 'THREAD_ENV' cannot be found on object of type 'java.util.Collections$UnmodifiableMap'
Затем я попробовал:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.#{systemEnvironment['THREAD_ENV']}.properties" />
а также
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.#{systemEnvironment[THREAD_ENV]}.properties" />
которые оба терпят неудачу и разрешают пустую строку. Я использую Tomcat6 и экспортирую эту переменную непосредственно перед перезапуском сервера Tomcat:
export THREAD_ENV=live;
/etc/init.d/tomcat6 restart;
Хотел бы отметить, что все три метода работают на некоторых моих экземплярах Tomcat6, но не на всех - в чем может быть причина такого странного поведения? Любая идея, что я делаю неправильно?