【问题标题】:RESTful Webservice time value issuesRESTful Webservice 时间价值问题
【发布时间】:2011-09-20 07:35:40
【问题描述】:

我创建了一个 RESTful 网络服务,这个网络服务使用 mysql 数据库。这是按照使用 Netbeans IDE 的操作指南完成的。

除了一件小事,一切都很好。

有一个表设置为“时间”类型(默认值 00:00:00),但由于某种原因,当我访问 wadl 时,我看到了:

<time>1970-01-01T17:00:00+01:00</time>

我不是一个非常好的 Java 程序员,但我在 Web 服务的源代码中看到了 Netbeans 所做的:

public void setDate(Date time) {
    this.time = time;
}

如何将其更改为仅时间值?有我可以使用的标准类吗?

[编辑]

我正在运行一个 glassfish 服务器,我在其中部署了一个 Netbeans 生成的战争文件。

使用 Netbeans 和 mysql 生成 RESTful Web 服务的教程

(netbeans.org/kb/docs/websvc/rest.html#entities-and-services)

【问题讨论】:

    标签: rest netbeans glassfish wadl


    【解决方案1】:

    在数据库中,时间值通常只是存储为忽略日期部分的长值,这导致当它转换为日期时,日期值是 unix epoch 值(即 0)。

    所以我不确定这是不是一个问题,只需将其转换回接收端的日期,您就会有一个正确设置时间的日期。

    编辑: 我想你有一个定义这个“时间”参数的某种传输对象?或者您是否使用休眠或类似对象作为您的 rest xml 生成器的输出?

    如果是这样,您是否尝试将数据类型从日期更改为时间?

    另一种方法是将类型更改为 String 并在 setDate 方法中使用 SimpleDateFormat 以获取所需格式的字符串。

    【讨论】:

    • 听起来不错,但我只想有一个时间值而不是日期。
    • 你用哪个api来生成其余的xml?
    • 我正在运行一个 glassfish 服务器,我在其中部署了一个 Netbeans 生成的战争文件。所以我对文件的生成方式没有任何发言权。 (netbeans.org/kb/docs/websvc/rest.html#entities-and-services)
    【解决方案2】:

    RESTful Web 服务公开的类型在类YourTableFacadeREST 中定义。尝试修改该类中对应方法的返回类型。

    已编辑 问题是,当暴露的对象更复杂并且您的日期只是该对象的“一部分”时,上述想法将不起作用。可能最好的解决方案是使用读取对象的代码来处理转换。

    如果您的目标只是显示这些数据(即对于 GET 类型的请求),您可以尝试使用视图。我从未在视图上完成 Jersey RESTful Web 服务,但它应该适用于 GET 端。您的视图应显示原始表,其中日期时间字段转换为日期。请参阅此处在 MySql 中创建视图的语法: http://dev.mysql.com/doc/refman/5.0/en/create-view.html

    【讨论】:

    • 感谢您的评论。我该怎么做?因为我只是不想在有人请求网络服务时显示日期格式。只是时间。 (这使得创建请求更容易)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多