Spring Boot에서 Tomcat JNDI JDBC 데이터 소스를 사용하는 방법
저는 Spring boot 애플리케이션이 있고 Tomcat 7에 WAR로 배포하고 싶습니다.그 일환으로 구성을 WAR에서 제외시켜 스테이지와 프로덕션 서버에 동일한 전쟁을 배포하고 구성을 통해 mysql 연결을 선택할 수 있도록 해야 합니다.
이를 위해 Tomcat 인스턴스에서 JNDI 데이터 소스로 구성된 mysql 연결을 사용하도록 Spring Boot 앱을 구성하고자 합니다.
스프링부츠는 이것을 할 수 있고 만약 그렇다면 어떻게 할 수 있습니까?
또는 스프링 4에서는 xml 기반 구성을 사용하지 않고 쉽게 실행할 수 있습니다.
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
@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("jdbc/apolloJNDI");
return dataSource;
}
JndiDataSourceLookup에서 내부적으로 이 부분을 추가하는 변환 JndiName을 호출하기 때문에 "java:comp/env/"가 필요하지 않습니다.다른 클래스에서는 전체 경로를 설정해야 합니다.
제가 한 일은 이렇습니다.
에 다음을 추가합니다.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
동면 특정 속성을 사용합니다.
외부 Tomcat과 함께 Spring Boot을 사용하는 여러분 모두를 위한 힌트입니다.전쟁에 Tomcat 병이 들어있지 않도록 해주세요.동일한 jar의 여러 버전이 javax.name으로 표시되는 숨겨진 ClassCastException을 생성합니다.NamingException.
언급URL : https://stackoverflow.com/questions/22101473/how-do-you-use-a-tomcat-jndi-jdbc-datasource-in-spring-boot
'programing' 카테고리의 다른 글
Python에서 "스레드 로컬 스토리지"란 무엇이며, 왜 필요합니까? (0) | 2023.10.09 |
---|---|
밑줄과 jshint 사용 (0) | 2023.10.09 |
Vim으로 Git commit 메시지 입력 문제 (0) | 2023.10.09 |
Oracle을 사용한 Django ORM의 성능 저하 (0) | 2023.10.09 |
문자열을 더블로 변환하면 리터럴 더블과 같습니까? (0) | 2023.10.09 |