J'ai une application Spring Boot et je souhaite déployer en tant que WAR sur Tomcat 7. Dans le cadre de cela, je dois conserver la configuration en dehors du WAR, afin de pouvoir déployer la même guerre sur mes serveurs de scène et de production et la faire récupérer le connexion mysql via la configuration.
À cette fin, je souhaite configurer mon application Spring Boot pour utiliser une connexion mysql configurée en tant que source de données JNDI dans l'instance Tomcat.
La botte de printemps peut-elle faire cela et si oui, comment?
Alternativement, cela est facile à faire dans Spring 4 sans recourir à une configuration basée sur xml.
@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("jdbc/apolloJNDI");
return dataSource;
}
Aucun "Java: comp/env /" n'est nécessaire car JndiDataSourceLookup appelle en interne convertJndiName qui ajoute cette partie. Dans d'autres classes, vous devez définir le chemin complet.
Si vous utilisez Spring Boot 1.2 ou supérieur, cela est devenu plus facile. Vous pouvez simplement l'ajouter à application.properties
spring.datasource.jndi-name=Java:comp/env/jdbc/my_database
Les documents pertinents: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connecting-to-a-jndi- source de données
Voici ce que j'avais fait.
Ajoutez ce qui suit à Application.Java
@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("Java:comp/env/jdbc/mysqldb");
return dataSource;
}
Suivez ensuite l'exemple de https://spring.io/guides/gs/accessing-data-jpa/ pour configurer les propriétés spécifiques TransactionManager
et Hibernate.