Как вы используете источник данных Tomcat JNDI JDBC в Spring Boot

У меня есть загрузочное приложение Spring и вы хотите развернуть его как WAR для Tomcat 7. Как часть этого, мне нужно сохранить конфигурацию из WAR, чтобы я мог развернуть ту же войну на моем этапе и на производственных серверах и запустите соединение mysql через конфигурацию.

С этой целью я хочу настроить приложение Spring Boot для использования соединения mysql, настроенного как источник данных JNDI в экземпляре Tomcat.

Может ли Spring загрузить это, и если да, то как?

Альтернативно это легко сделать в Spring 4, не прибегая к конфигурации на основе xml.

Ответ 1

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

Нет "java: comp/env/", потому что JndiDataSourceLookup internaly вызывает convertJndiName, которые добавляют эту часть. В других разделах вы должны установить полный путь.

Ответ 3

Вот что я сделал.

Добавьте следующее в 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.