Jdbc 在jboss/weblogic服务器中使用时区配置数据源

Jdbc 在jboss/weblogic服务器中使用时区配置数据源,jdbc,oracle11g,timezone,weblogic,jboss7.x,Jdbc,Oracle11g,Timezone,Weblogic,Jboss7.x,我将在每次获得DB连接时重置数据库会话时区,从而在我的web应用程序中重新设置数据库会话时区 代码如下所示: public Connection getConnection(GmDNSNamesEnum enDNSName) throws AppError { ... DataSource ds = (DataSource) ic.lookup(enDNSName.getDNSName()); conn = ds.getC

我将在每次获得DB连接时重置数据库会话时区,从而在我的web应用程序中重新设置数据库会话时区

代码如下所示:

public Connection getConnection(GmDNSNamesEnum enDNSName) throws AppError
    {
         ...   
         DataSource ds = (DataSource) ic.lookup(enDNSName.getDNSName());
            conn = ds.getConnection();
            conn.setAutoCommit(false);
            setTimeZone(strTimeZone);
        ...
        return conn;
    }




private void setTimeZone(String strTimeZone){
     Statement stmt = null;
     if(conn != null) {
     try{
     stmt = conn.createStatement();
         stmt.execute("alter session set time_zone=\'" + strTimeZone+"\'");
     } catch (Exception e)
         {
         String strErrorMsg = GmCommonClass.getExceptionStackTrace(e);
             log.error("Exception e "+strErrorMsg);
         throw new AppError(e);
         }
     }
    }
是否有其他方法可以设置数据库会话时区

现在,我正在寻找在jboss/weblogic服务器中配置具有不同时区的数据源,并使用特定于用户时区的适当数据源,而不是每次通过执行alter session脚本重置会话时区

提前谢谢

哇,好的

也许您可以尝试将日期和时间持久化到支持时区的数据库列中,而不是每次连接时都扭曲数据源?惯例是以UTC时间存储日期,然后在表示层中进行时区转换(或至少在检索后进行转换)。

好的


也许您可以尝试将日期和时间持久化到支持时区的数据库列中,而不是每次连接时都扭曲数据源?惯例是以UTC时间存储日期,然后在表示层中进行时区转换(或至少在检索后进行转换)。

如果日期列定义为带有本地时区的时间戳,则Oracle将负责将日期转换为当前用户会话时区,无需手动转换。因此,我每次都尝试将用户会话时区设置为数据库连接。如果日期列定义为带有本地时区的时间戳,则Oracle将负责将日期转换为当前用户会话时区,不需要手动转换。所以我每次都尝试将用户会话时区设置到数据库连接中。