RESTful Webservice проблемы значения времени - PullRequest
0 голосов
/ 20 сентября 2011

Я создал веб-сервис RESTful, и этот веб-сервис использует базу данных mysql. Это было сделано по инструкции с использованием среды IDE Netbeans.

Все работает нормально, кроме одной мелочи.

Существует одна таблица, которая установлена ​​как тип времени (значения по умолчанию 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 файл войны.

Учебник по созданию веб-сервиса RESTful с использованием Netbeans и mysql

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

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Типы, предоставляемые веб-сервисом RESTful, определены в классе YourTableFacadeREST.Попробуйте изменить возвращаемый тип соответствующего метода в этом классе.

EDITED Проблема в том, что приведенная выше идея не будет работать, когда экспонированный объект более сложный, а ваша дата является "частью" этого объекта.,Вероятно, лучшим решением является обработка преобразования с помощью кода, читающего объект.

Если ваша цель - просто отобразить эти данные (т. Е. Для запросов типа GET), вы можете попробовать с представлением.Я никогда не делал Jersey RESTful веб-сервисов на представлении, но это должно работать на стороне GET.Ваш вид должен отображать исходную таблицу с полем даты и времени, преобразованным в дату.Смотрите здесь синтаксис для создания представления в MySql: http://dev.mysql.com/doc/refman/5.0/en/create-view.html

0 голосов
/ 20 сентября 2011

В базе данных значение времени обычно просто хранится как длинное значение, игнорируя часть даты, что приводит к тому, что при преобразовании в дату значение даты является значением эпохи unix (т. Е. 0).

Так что я не уверен, что это проблема, просто преобразуйте ее обратно в дату на получающем конце, и у вас будет дата с правильно установленным временем.

EDIT: Я полагаю, у вас есть какой-то объект переноса, где вы определяете этот параметр времени? Или вы используете hibernate или подобные объекты в качестве вывода на ваш генератор xml отдыха?

Если это так, пытались ли вы изменить тип данных с даты на время?

Другим способом было бы изменить тип на String и в методе setDate использовать SimpleDateFormat, чтобы получить строку в нужной форме.

...