2010-05-10 25 views
5

Tôi có ứng dụng 10g spring/jdbc/oracle. Múi giờ của cơ sở dữ liệu máy chủ Oracle được đặt thành múi giờ JVM GMT + 2 là GMT + 2 (mặc dù nó không quan trọng trong trường hợp của tôi).Đặt múi giờ phiên với spring jdbc oracle

Tôi có một quy trình được lưu trữ thực hiện một số thao tác ngày. Vấn đề là múi giờ phiên là khác nhau (GMT) so với múi giờ cơ sở dữ liệu mặc dù tôi không đặt rõ ràng múi giờ phiên trong mã/cấu hình của tôi.

Theo tôi biết múi giờ phiên theo mặc định bằng múi giờ cơ sở dữ liệu. Bất kỳ ý tưởng nào tại sao múi giờ phiên khác với múi giờ của cơ sở dữ liệu hoặc làm cách nào tôi có thể cấu hình múi giờ trong cấu hình mùa xuân (org.apache.commons.dbcp.BasicDataSource)?

Cảm ơn bạn.

+1

Bạn có ý nghĩa với phiên nào? Phiên kết nối Oracle hoặc phiên HTTP? Các cựu, tôi giả sử? – skaffman

+0

Điều này giải quyết vấn đề của bạn? Tôi cần phải làm tương tự trên MySQL và tôi vẫn đang tìm cách để làm điều đó! –

+0

Tôi có câu hỏi/bài đăng ở chế độ DEAD này !! Không có câu trả lời, không xác nhận, không có suy đoán !! –

Trả lời

6

Cách chính xác là sử dụng DelegatingDataSource, truy xuất OracleConnection đối tượng từ nguồn dữ liệu gốc và gọi OracleConnection.setSessionTimeZone() với thông số thích hợp.

đang C3P0 trông giống như:

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; 
    } 
} 
1

tôi giải quyết vấn đề này bằng cách nâng cấp trình điều khiển JDBC của Oracle từ v10.2.0.1.0 để v11.2.0.3. Không cần thay đổi mã java của tôi.

Nguồn: Spring forums.

Các vấn đề liên quan