web-dev-qa-db-ja.com

Spring BootでTomcat JNDI JDBCデータソースをどのように使用しますか

Springブートアプリケーションがあり、Tomcat 7にWARとしてデプロイしたいと考えています。この一環として、構成をWARから除外して、同じ戦争をステージングサーバーとプロダクションサーバーにデプロイし、それをピックアップできるようにする必要があります。設定によるmysql接続。

このために、TomcatインスタンスでJNDIデータソースとして構成されたmysql接続を使用するようにSpring Bootアプリを構成します。

春のブーツはこれを行うことができますか?

あるいは、xmlベースの構成に頼らずに、Spring 4でこれを簡単に実行できます。

19
Zac Tolley
@Bean
public DataSource dataSource() {
  JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
  DataSource dataSource = dataSourceLookup.getDataSource("jdbc/apolloJNDI");
  return dataSource;
}

JndiDataSourceLookupがこの部分を追加するconvertJndiNameを内部的に呼び出すため、「Java:comp/env /」は必要ありません。他のクラスでは、完全なパスを設定する必要があります。

6
nekperu15739

Spring Boot 1.2以降を使用している場合、これは簡単になりました。これをapplication.propertiesに追加するだけです

spring.datasource.jndi-name=Java:comp/env/jdbc/my_database

関連ドキュメント: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connecting-to-a-jndi-データソース

16
dustin.schultz

これが私がやったことです。

以下をApplication.Javaに追加します

@Bean
public DataSource dataSource() {
  JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
  DataSource dataSource = dataSourceLookup.getDataSource("Java:comp/env/jdbc/mysqldb");
  return dataSource;
}

次に https://spring.io/guides/gs/accessing-data-jpa/ の例に従って、TransactionManagerおよびHibernate固有のプロパティを設定します。

4
Yue Liu