我有一个连接到Oracle DB的tomcat5服务器,我喜欢指定Oracle会话时区。
我设法通过将JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Europe/Zurich"
添加到配置文件tomcat5.conf
来定义它。问题是当我在Oracle SELECT SESSIONTIMEZONE FROM dual;
中查询时,我得到+02:00
目前这没关系,但是在夏令时关闭的冬季会出现问题 - 除非我重新启动tomcat服务器。
如何将时区设置为区域名称(例如Europe/Zurich
)而不是UTC偏移量(例如+02:00
)?我想避免在我的Oracle中运行显式的ALTER SESSION SET TIME_ZONE = ...;
。
答案 0 :(得分:0)
说真的,Tomcat5? Tomcat 5.5在2012年已经decommissioned。除此之外:我建议以不同的方式解决这个问题:在后端存储时区出没的数据总是很麻烦。因此,除非您向用户展示数据,否则您应始终纯粹存储UTC并且不必担心任何夏令时,用户的地理位置或当前时区。只有这样(并且在输入时)才能将它与当前用户的当前时区相关联并相应地转换为/来自UTC。
因此,您提出的问题可能似乎是合乎逻辑的,但稍后会导致很多的痛苦。节省自己的痛苦,并在后端使用UTC。
您已经知道如何设置Tomcat的默认时区,您可能希望能够另外处理特定于用户的时区,但这是一个完全不同的野兽。