programing

Spring Boot에서 Tomcat JNDI JDBC 데이터 소스를 사용하는 방법

codeshow 2023. 10. 9. 23:41
반응형

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

반응형