[SPRING] spring jdbc oracle을 사용하여 세션 시간대 설정
SPRINGspring jdbc oracle을 사용하여 세션 시간대 설정
스프링 / jdbc / oracle 10g 애플리케이션이 있습니다. 오라클 서버 데이터베이스 시간대는 GMT + 2로 설정됩니다. JVM 시간대는 GMT + 2입니다 (제 경우에는 문제가되지 않지만).
몇 가지 날짜 작업을 수행하는 저장 프로 시저가 있습니다. 문제는 내 코드 / 구성에 세션 시간대를 명시 적으로 설정하지 않아도 세션 시간대가 데이터베이스 시간대와 다름 (GMT)이라는 것입니다.
내가 아는 한 세션 시간대는 기본적으로 데이터베이스 시간대와 같습니다. 세션 시간대가 데이터베이스 시간대와 다른 이유는 무엇입니까? 아니면 스프링 구성 (org.apache.commons.dbcp.BasicDataSource)에서 어떻게 구성 할 수 있습니까?
고맙습니다.
해결법
-
==============================
1.올바른 방법은 DelegatingDataSource를 사용하여 원래 데이터 소스에서 OracleConnection 객체를 검색하고 해당 매개 변수로 OracleConnection.setSessionTimeZone ()을 호출하는 것입니다.
올바른 방법은 DelegatingDataSource를 사용하여 원래 데이터 소스에서 OracleConnection 객체를 검색하고 해당 매개 변수로 OracleConnection.setSessionTimeZone ()을 호출하는 것입니다.
C3P0 코드는 다음과 같습니다.
private Object[] timeZoneArgs = new Object[] { "Europe/Berlin" }; @Override public Connection getConnection() throws SQLException { Connection conn = super.getConnection(); try { final Method setSessionTimeZoneMethod = OracleConnection.class.getMethod("setSessionTimeZone", String.class); final C3P0ProxyConnection castCon = (C3P0ProxyConnection) conn; castCon.rawConnectionOperation(setSessionTimeZoneMethod, C3P0ProxyConnection.RAW_CONNECTION, timeZoneArgs); return conn; } catch (Exception e) { log.error("setSessionTimeZone failed " + e.getMessage()); return conn; } }
-
==============================
2.Oracle의 JDBC 드라이버를 v10.2.0.1.0에서 v11.2.0.3으로 업그레이드하여이 문제를 해결했습니다. 내 Java 코드를 변경하지 않아도됩니다.
Oracle의 JDBC 드라이버를 v10.2.0.1.0에서 v11.2.0.3으로 업그레이드하여이 문제를 해결했습니다. 내 Java 코드를 변경하지 않아도됩니다.
출처 : Spring forums.
-
==============================
3.봄 구성에서 응용 프로그램을 실행하기 전에 VM 옵션을 아래에 추가하십시오.
봄 구성에서 응용 프로그램을 실행하기 전에 VM 옵션을 아래에 추가하십시오.
-Duser.timezone=EDT
또한 pom에 최신 jdbc 드라이버가 있는지 확인하십시오.
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> </dependency>
from https://stackoverflow.com/questions/2805907/setting-session-timezone-with-spring-jdbc-oracle by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] SQL Server에서 날짜 추출 문제 (0) | 2019.02.23 |
---|---|
[SPRING] 스프링 플럭스에 대한 HATEOAS / Mono response (0) | 2019.02.23 |
[SPRING] Spring RESTful 웹 서비스로 CSRF 보호를 처리하는 방법? (0) | 2019.02.23 |
[SPRING] 왜 Spring Integration에는 여러 XML 스키마가 있으며 어떤 스키마를 사용해야합니까? (0) | 2019.02.23 |
[SPRING] 버블 부팅을 지원하는 gradle 연속 빌드가 있습니까? (0) | 2019.02.23 |