1
8
我找到的唯一方法是设置一个过滤器并更改过滤器中的时区,
这个
我必须这样做,因为第三方库采用默认时区,而我们没有源代码。这是一个混乱,因为这改变了日志时区,但我们不想在不同的时间登录。处理这一问题的正确方法是在终端用户暴露的任何时间值中使用特定的时区。 |
2
8
编辑:我错了。此编辑将更正它。
答案是你不能
可移植地
为单个webapp设置(默认)时区。但是如果您使用的是Java 6(至少)
行为是 未记录的 在阳光下,爪哇。它适用于Java 6和5(见上文),但不能保证它将在较旧的或更新的SunJies中工作。但是,如果Sun决定为默认时区更改/恢复“全局”模型,我会非常惊讶。它会破坏太多的现有应用程序,而且全局应用程序也很糟糕。 |
3
7
将系统变量设置为
您还可以在$tomcat_home/bin/catalina.sh或%tomcat_home%\bin\catalina.bat文件中指定catalina选项。 |
4
3
在JDK6中,Sun/Oracle改变了时区的实现。在JDK5.0setDefault中,总是在线程局部变量中设置时区,而不是在JVM中设置时区,这导致了一些问题。Sun承认这是一个bug,并在JDK1.6中修复了它。
在JDK1.6以后的版本中(我检查了JDK1.6和JDK1.7的源代码),如果JVM不是用安全管理器启动的(或者没有用
当您使用安全管理器启动Tomcat JVM时,您需要提供单独的权限,这对我们来说是一个不可能的开端,因为我们在发布周期后期。因此,在安全策略文件中,我们提供了所有权限,并覆盖默认Java安全管理器来选择性地拒绝时区写访问。由于时区类的初始化延迟问题,我需要调用
这是我的测试程序。 --策略文件test.policy
--自定义安全管理器
} --JVM启动参数
|
5
0
退房 SimpleTimeZone . 您可以基于时区ID创建一个实例,并使用该实例显示使用该时区的日期/时间。如果需要,可以从特定于项目的配置文件中读取该ID。 |
6
0
最好的方法是修改Web应用程序,使其通过web.xml接受显式时区配置,而不是使用默认的JVM时区。 |
8
0
使用Java 7/Tomcat 7,有一个处理/黑客允许开发者在每个WebApp上设置一个唯一的时区。我们必须在应用程序中实现这一点,因为我们必须支持在同一个JVM中使用不同默认时区运行的多个webapps。 我在堆栈溢出上看到的其他解决方案并不能完全解决这个问题。
我还研究了时区的Java源代码,我找到了一种方法,通过注入JavaAWTAccess接口的自定义实现,将动态时区作为所有调用方的默认时区返回。这可以通过查看线程类加载器,从中确定实际的webapp上下文,然后根据一些webapp名称到时区的映射适当地处理它来完成。 同样,这是特定于应用服务器的,必须对Tomcat、Jetty、JBoss等进行不同的操作。这种方法也是特定于JVM实现的(仅适用于Oracle/Sun),但我相信可以扩展到OpenJDK和其他应用程序。 我们已经为OracleJDK7SE+Tomcat7提供了一个经过验证的工作解决方案,它部署在Windows和Linux上,在不同的时区托管多个Web应用程序。 |
9
0
也可以使用vm参数来定义它
|
gigashark · 部署生成的Maven Spring项目不起作用 6 年前 |
Tristan Le Gacque · ApachePOI:NoClassDefFoundError:org。阿帕奇。poi。openxml4j。例外情况。invalidFormatException无效格式异常 6 年前 |
Carlos Chávez · Tomcat/Hibernate配置 6 年前 |