Spring 4.3.6 및 Spring Boot 1.4.4를 사용하는 응용 프로그램이 JAR로 내보내집니다. 원격 Oracle 데이터베이스에 연결하고 싶지만 응용 프로그램을 중단하지 않고 구성을 외부화하는 데 문제가 있습니다.DataSource 용 외부 부팅 구성이 작동하지 않습니다.
이 내 현재 해결 방법입니다 : 위의와
import org.apache.tomcat.jdbc.pool.DataSource;
@Bean
public DataSource dataSource() {
DataSource dataSource = new DataSource();
dataSource.setUrl("jdbc:oracle:thin:@ip-address:port:orcl");
dataSource.setUsername("user");
dataSource.setPassword("password");
dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
return dataSource;
}
, 내 응용 프로그램이 데이터베이스에 연결하고 성공적으로 쿼리를 실행할 수 있습니다. 내가 구성을 외부화 할 때 그러나, 다음과 같이
@Bean
@ConfigurationProperties(prefix="app.datasource")
public DataSource dataSource() {
return new DataSource();
}
// application.properties
app.datasource.url=jdbc:oracle:thin:@ip-address:port:orcl
app.datasource.username=user
app.datasource.password=password
app.datasource.driver-class-name=oracle.jdbc.OracleDriver
나는 나의 봄 부트 컨트롤러에 jdbcTemplate.update(query)
를 실행하려고 다음과 같은 오류가 (참고 위의 작품 외부화 제외)됩니다
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The url cannot be null
을
@ConfigurationProperties
을 제거하고 app.datasource
을 spring.datasource
으로 변경하려고했습니다. 또한 을 사용하여 javax.sql.DataSource
을 반환하려고했지만 두 경우 모두 동일한 오류가 발생합니다.
내가 잘못하고있다. 구성을 성공적으로 외부화하는 올바른 방법은 무엇입니까?
당신은 왜 당신 자신의'DataSource'를 만들고 있습니까? –
처음에는 내 자신을 만들지 않았습니다. hsqldb를 사용했지만 Oracle 데이터베이스에 대한 액세스 권한이 없습니다. 나는 질문을했고 대답은 ojdbc로 바꾼다. 그래서 나는 그렇게했다. 이제는 jdbctemplate에 autowire 할 빈을 찾을 수 없으므로 스프링 참조를 읽었습니다 (이 작업을 시작한 이래로 n 번째 시간 동안). 문제는 데이터 소스가 어떻게 든 나타나지 않는다는 것입니다. 내가 뭘하고 있는지 추측하고 있는데, 아마도 맞춤 데이터 소스로 간주 될 수 있습니다. 따라서 내가 하나를 만들려고합니다. 그리고 이제는 자동으로 application.properties 설정으로 구성되지 않습니다 ... – thegreatjedi
hsqldb는 oracle이 아닙니다 ... 그래서 분명히 결코 작동하지 않을 것입니다. 올바른 드라이버가 필요하며 수동 구성이 필요한 드라이버는 없습니다. 또한 예외는 (분명히) 데이터 소스가 있지만 연결이 이루어질 수 없다는 것을 나타내므로 사용자 이름/비밀번호 조합에 문제가있을 수 있습니다. 기본적으로 구성을 제거하고,'application.properties'에서'app.'를'spring.'으로 바꾸고 다시 시작하고 예외를 확인하십시오. –