当前位置: 首页 > 面试题库 >

使用Spring JDBC Oracle设置会话时区

秦涵涤
2023-03-14
问题内容

我有一个spring / jdbc / oracle 10g应用程序。Oracle服务器数据库时区设置为GMT + 2 JVM时区设置为GMT +
2(即使对于我而言这无关紧要)。

我有一个执行某些日期操作的存储过程。问题是,即使我未在代码/配置中明确设置会话时区,会话时区也不同于数据库时区(GMT)。

据我所知,会话时区默认情况下等于数据库时区。知道为什么会话时区与数据库时区不同,或者如何在春季配置中配置它(org.apache.commons.dbcp.BasicDataSource)?

谢谢。


问题答案:

正确的方法是使用DelegatingDataSourceOracleConnection从原始数据源检索对象,然后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;
    }
}


 类似资料:
  • 问题内容: 我正在使用Spring Security 3.0向LDAP服务器进行身份验证,但无法确定自己的会话超时时间。我相信默认值为30分钟,但我需要将其设置为更长的时间 问题答案: 您可以在web.xml中为所有会话设置会话超时(例如60分钟): 或按会话使用 后者您可能要在authorizationSuccessHandler中进行。

  • 但这并不能解决问题。 如何向请求添加会话cookie?

  • 帮助将cookie设置为HttpClient 创建了一个登录到外部web服务的程序。但是,要从HTTP GET获取重要信息,我无法传入cookie(从登录生成)。 app.java(使用ClientHelper的类): 当我运行应用程序时,我可以登录(我看到生成的JSON),但是getProfile()方法返回一个空的JSON对象: 在命令行中,我试图使用curl来模拟以下情况:

  • 问题内容: 如何在Spring Boot应用程序中配置(嵌入式)Tomcat会话超时? 我有一个SessionListener,但是我不知道必须在哪个类中将此Listener添加到Context中。 问题答案: 你应该能够在application.properties文件中进行设置。

  • 问题内容: 是否可以使用Javascript设置PHP会话变量? 问题答案: 在JavaScript中: 在session_write.php文件中: 在HTML中:

  • 我有一个运行在Tomcat5上的非常好用的web Java1.5web应用程序。应用程序依赖于它的会话,所以只要会话Cookie被传递出去,或者JSESSIONID出现在上下文路径的末尾,就可以正常工作,就像“;JSESSIONID=...” null