2016-11-29 13 views
2

環境プロパティを使用してデータベース接続をセットアップできませんでした。環境変数 - Spring、Tomcat

アプリケーションはSpringでビルドされ、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 

変数の値が正しく印刷されて実行します。

私はまた、CATALINA_HOME/binに/ 'に置かsetenv.shて値を渡そうとしました:

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

は、この情報がお役に立てば幸い!