2016-11-29 8 views
2

Я не мог настроить подключение к базе данных с использованием свойств среды.Переменные окружения - Spring, Tomcat

Приложение построено с использованием пружины и запускается в контейнере Tomcat (7.0.52). файл установки

XML:

<bean id="dataSource" 
     class="com.mchange.v2.c3p0.ComboPooledDataSource" 
     p:driverClass="com.mysql.jdbc.Driver" 
     p:jdbcUrl="jdbc:mysql://${CONF_MYSQL_HOST}:${CONF_MYSQL_PORT}/${CONF_MYSQL_DATABASE}" 
     p:user="${CONF_MYSQL_LOGIN}" 
     p:password="#${CONF_MYSQL_PASSWORD}" 
     p:minPoolSize="6" 
     p:maxPoolSize="18" /> 

<context:property-placeholder properties-ref="casProperties" 
           system-properties-mode="FALLBACK"/> 

Когда я бегу

echo $CONF_MYSQL_HOST 

значение переменной печатается правильно.

Я также попытался передать значения через setenv.sh помещенного в CATALINA_HOME/бен/':

export CONF_MYSQL_HOST=$CONF_MYSQL_HOST 
export CONF_MYSQL_PORT=$CONF_MYSQL_PORT 
export CONF_MYSQL_DATABASE=$CONF_MYSQL_DATABASE 
export CONF_MYSQL_LOGIN=$CONF_MYSQL_LOGIN 
export CONF_MYSQL_PASSWORD=$CONF_MYSQL_PASSWORD 

, но ничего не изменилось.

В файле журнала я вижу только:

jdbcUrl -> jdbc:mysql://:/ 

ответ

0

Я хотел бы добавить это в комментариях, но у меня нет необходимых очков репутации еще.

Если вы запустите свой tomcat с помощью интерфейса командной строки, переменные среды должны быть разрешены с помощью специальной переменной Spring для ссылки на них.

ли вы попробуйте заменить $ {CONF_MYSQL_LOGIN} с соответствующей Spring Expression выражения языка # {systemEnvironment [ 'CONF_MYSQL_LOGIN']} для каждого из ваших переменных.

+0

Изменение на 'systemEnvironment' не помогает. 'systemProperties' также проверяется. – mateusz

1

Я хотел бы предложить, чтобы сделать JavaConfig так:

@Configuration 
public class DatabaseConfig { 

    private Environment env; 

    @Autowired 
    public DatabaseConfig(Environment env) { 
    this.env = env; 
    } 

    @Bean 
    public DataSource dataSource() { 
    ComboPooledDataSource dataSource = new ComboPooledDataSource(); 
    dataSource.setDriverClass("com.mysql.jdbc.Driver"); 
    String jdbcUrl = String.format("jdbc:mysql://%s:%s/%s", env.getProperty("CONF_MYSQL_HOST"), 
       env.getProperty("CONF_MYSQL_PORT"), env.getProperty("CONF_MYSQL_DATABASE")); 
    dataSource.setJdbcUrl(jdbcUrl); 
    dataSource.setUser(env.getProperty("CONF_MYSQL_LOGIN")); 
    dataSource.setPassword(env.getProperty("CONF_MYSQL_PASSWORD")); 
    dataSource.setMinPoolSize(6); 
    dataSource.setMaxPoolSize(18); 

    return dataSource; 
    } 
} 

Надеется, что это помогает!

 Смежные вопросы

  • Нет связанных вопросов^_^