有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中web服务序列化日期

我通过web服务传递一些对象,其中一些包含java。sql。日期因为Date没有空构造函数,所以它不想序列化

问题的第一部分很简单:在客户和服务之间传递日期的最佳方式是什么

第二部分有点棘手:一旦我决定如何传递日期,我显然可以声明date transient,并使一些包装类以字符串或其他形式传递日期,但如何将相同的解决方案尽可能透明地应用于包含date的几个类

(我有一种预感,DynamicProxy thingy可能是一种解决方案,但阅读Sun网站上的文档并没有太大帮助,所以如果它真的是朝着这个方向发展的,请澄清一下。)

编辑:对不起,我问错了问题(我和同事之间的一些误解,什么是真正的问题)。由于反序列化而出现问题。所以一旦我有了xml格式的date,它就会尝试将自己反序列化为GregoriaCalendar。问题的另一部分仍然存在:在不为10个不同的类制作10个不同的包装器的情况下,接收某些内容(长时间戳或GregoriaCalendar)并将其转换为sql日期的最佳方式是什么。我正在使用NetBeans生成代码和wsdl


共 (4) 个答案

  1. # 1 楼答案

    我已经研究了java的实现。sql。日期和我所看到的java。sql。Date可以序列化为java的扩展。util。约会

  2. # 2 楼答案

    乔达时间

    Date类有一个笨重的API。更好的实现是Joda-Time

    ISO 8601

    Joda Time还允许您以ISO 8601标准格式(yyyy-mm-ddTHH:mm:SS.SSS)转换日期。在将日期从服务器移动到客户端时,使用此标准的优点是以可读的格式包含完整的日期。例如,当您使用JAXB时,日期的XML表示也是这个ISO标准。(参见XMLGregorianCalendar类)

  3. # 3 楼答案

    为了回答问题的第一部分,我建议使用iso 8601格式的字符串(这是日期编码的标准)

    对于第二部分,我不确定为什么需要代理类?或者为什么要扩展date类来支持这一点。您的web服务是否会知道某个字段是日期,并将其从日期转换为字符串并返回?我需要更多的信息

  4. # 4 楼答案

    java有一个警告。sql。最近,Date让我感到困扰的是,它不存储时间部分(小时、分钟、秒等),只存储日期部分。如果你想要完整的时间戳,你必须使用java。util。日期或java。sql。时间戳