带Java6系统时间的Tomcat7上的JSF显示委内瑞拉时间

带Java6系统时间的Tomcat7上的JSF显示委内瑞拉时间,java,jsf,timezone,tomcat7,Java,Jsf,Timezone,Tomcat7,编辑:JSF实现:mojorra2.1.9 我的web应用程序行为异常。当我在服务器上部署我的应用程序时,它会以最短时间为单位显示时间。像这样的太阳8月5日11:46:26兽医2012 问题是我不在委内瑞拉。我检查了服务器上的时区配置,它是正确的。当我在本地机器上运行应用程序时,根本没有问题,时间是正确的。但部署的时间是错误的 我将下面的上下文参数放入web.xml中,但它没有帮助。有什么问题我不知道 <context-param> <param-name>jav

编辑:JSF实现:mojorra2.1.9

我的web应用程序行为异常。当我在服务器上部署我的应用程序时,它会以最短时间为单位显示时间。像这样的太阳8月5日11:46:26兽医2012

问题是我不在委内瑞拉。我检查了服务器上的时区配置,它是正确的。当我在本地机器上运行应用程序时,根本没有问题,时间是正确的。但部署的时间是错误的

我将下面的上下文参数放入web.xml中,但它没有帮助。有什么问题我不知道

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

javax.faces.DATETIMECONVERTER\默认\时区\是\系统\时区
真的

JSF日期-时间转换器默认使用UTC。只有在设置该上下文参数时,它才会默认为系统时区(底层服务器平台的时区)。显然,所讨论的服务器配置了委内瑞拉时区作为默认时区(可能是因为它托管在委内瑞拉,由一个不知道自己在做什么的服务器管理员维护?)

删除该上下文参数应该可以解决您的具体问题,假设您没有通过自定义转换器或设置
时区属性来覆盖JSF默认日期-时间转换器或其设置


如果这不能解决您的问题,那么请尝试升级JSF实现(但我不记得Mojarra中有任何与此相关的bug,因此我认为如果您使用Mojarra,升级将无法解决问题;不过我不确定MyFaces),或者尝试在整个页面中明确设置每个
标记的
时区属性。

JSF日期-时间转换器默认使用UTC。只有在设置该上下文参数时,它才会默认为系统时区(底层服务器平台的时区)。显然,所讨论的服务器配置了委内瑞拉时区作为默认时区(可能是因为它托管在委内瑞拉,由一个不知道自己在做什么的服务器管理员维护?)

删除该上下文参数应该可以解决您的具体问题,假设您没有通过自定义转换器或设置
时区属性来覆盖JSF默认日期-时间转换器或其设置


如果这不能解决您的问题,那么请尝试升级JSF实现(但我不记得Mojarra中有任何与此相关的bug,因此我认为如果您使用Mojarra,升级将无法解决问题;不过我不确定MyFaces),或者尝试在整个页面中明确设置每个
标记的
时区属性。

我用“-Duser.timeZone=Europe/Istanbul”参数启动了tomcat,现在正是时候。我不明白为什么默认时间是委内瑞拉时间,但这解决了我的问题。我们将对此进行进一步研究,以了解导致此问题的原因。

我使用“-Duser.timezone=Europe/Istanbul”参数启动tomcat,现在正是时候。我不明白为什么默认时间是委内瑞拉时间,但这解决了我的问题。我们将对此进行进一步研究,以了解导致此问题的原因。

实际上,服务器是一个虚拟机,由一个基于此处的服务器托管,我有管理权。检查时区和区域设置,似乎正确。在这个问题之后,我添加了上下文参数,它没有任何区别。我想不出还有什么会导致这个问题。我也没有覆盖JSF转换器区域设置。也许是因为java设置配置错误?我将检查@Balusc请检查我刚才添加到答案中的第3段。明确提到使用的JSF impl/version总是很有帮助的,在将来所有与JSF相关的问题中也是如此。但它不仅出现在页面上,就连log4j的日志也出现在委内瑞拉时代。可能是因为Java的时区设置配置错误吗?我检查了Tomcat的启动参数是否与时区有关,但似乎与@Balusca无关。另一种可能是,由于某些政治原因,特定机器中的“GMT”时区已被“VET”取代。。。JSF使用
TimeZone.getTimeZone(“GMT”)
作为默认时区。我会试着用
main()
摆弄一个Java应用程序来测试/验证一个和另一个。按照你的建议,用一个简单的Java应用程序打印出当前时间。那是委内瑞拉时间。解决方案是使用-Duser.timezone参数启动Tomcat。谢谢@BalusCWell实际上该服务器是一个虚拟机,由一个基于这里的服务器托管,我有管理权。检查时区和区域设置,似乎正确。在这个问题之后,我添加了上下文参数,它没有任何区别。我想不出还有什么会导致这个问题。我也没有覆盖JSF转换器区域设置。也许是因为java设置配置错误?我将检查@Balusc请检查我刚才添加到答案中的第3段。明确提到使用的JSF impl/version总是很有帮助的,在将来所有与JSF相关的问题中也是如此。但它不仅出现在页面上,就连log4j的日志也出现在委内瑞拉时代。可能是因为Java的时区设置配置错误吗?我检查了Tomcat的启动参数是否与时区有关,但似乎与@Balusca无关。另一种可能是,由于某些政治原因,特定机器中的“GMT”时区已被“VET”取代。。。JSF使用
TimeZone.getTimeZone(“GMT”)
作为默认时区。我会尝试用
main()
摆弄一个Java应用程序来测试/验证这个应用程序