RESTful Web服务时间值问题

时间:2011-09-20 07:35:40

标签: rest netbeans glassfish wadl

我创建了一个RESTful webservice,这个webservice使用了一个mysql数据库。这是在使用Netbeans IDE的方法之后完成的。

除了一件小事之外,一切正常。

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

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

我不是一个非常优秀的Java程序员,但我在网络服务的来源中看到Netbeans做到了这一点:

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

如何将其更改为时间值?我可以使用标准课吗?

[编辑]

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

编辑: 我想你有一个转移对象,你定义这个“时间”参数?或者您使用休眠或类似对象作为其余xml生成器的输出?

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

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

答案 1 :(得分:0)

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

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

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