Как вы используете источник данных 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, которые добавляют эту часть. В других разделах вы должны установить полный путь.
Ответ 2
Если вы используете 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-datasource
Ответ 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.