【发布时间】:2010-12-03 01:49:49
【问题描述】:
我有一个用于更新数据库的 JAX-B java Web 服务。我正在更新的表中的每一行都由一个类似于下面的对象表示:-
public class Item {
private String id;
private Date startDate;
private Date endDate;
public Item() { }
...
}
这个类在一个单独的程序中被实例化,然后通过 SOAP 在类似于下面的消息中传递:-
...
<item>
<id>D001IAAC030</id>
<startDate>2009-09-17T00:00:00.000+01:00</startDate>
<endDate>2009-10-01T00:00:00.000+01:00</endDate>
</item>
...
如您所见,由于 BST,UTC 时间有一个 +01:00 的偏移量。但是,当对象在服务器上编组(也在我的本地计算机上)时,它会恢复为 GMT 并从日期中减去 1 小时。
你能告诉我怎么做吗:-
- 将我的 Glassfish 服务器设置为正确的区域设置,以便将日期识别为 BST。
- 告诉我如何在 Web 服务端拦截编组,以便在设置日期之前自己设置时区。
TIA,
Urf
【问题讨论】:
-
java.util.Date 对象没有保留任何时区信息,那么“它恢复到 GMT 并从日期中减去 1 小时”是什么意思?
-
JAX-B 使用基于 XMLGregorianCalendar 的 XSDate 对象,据我所知。也许是 XSDate to Date 的解析导致了这个问题。我尝试改为解析为 JodaTime DateTime 对象,但这只是给出当前日期和时间,而不是我发送的日期和时间。
标签: java web-services date marshalling