Проблемы со значением времени веб-сервиса RESTful

Я создал веб-сервис 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)


person Metalmini    schedule 20.09.2011    source источник


Ответы (2)


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

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

РЕДАКТИРОВАТЬ: я полагаю, у вас есть какой-то объект передачи, где вы определяете этот параметр «время»? Или вы используете спящий режим или подобные объекты в качестве вывода для вашего генератора xml для отдыха?

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

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

person Mathias    schedule 20.09.2011
comment
Звучит хорошо, но я просто хочу иметь значение времени вместо даты. - person Metalmini; 20.09.2011
comment
какой API вы используете для генерации остальных xml? - person Mathias; 20.09.2011
comment
Я запускаю сервер Glassfish, на котором я развернул файл войны, сгенерированный Netbeans. Так что я ничего не сказал о том, как был сгенерирован файл. (netbeans.org/kb/docs/websvc/rest.html #entities-and-services) - person Metalmini; 20.09.2011

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

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

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

person perissf    schedule 20.09.2011
comment
Спасибо за комментарий. Как бы я это сделал? Потому что я просто не хочу показывать формат даты, когда кто-то запрашивает веб-сервис. Как раз время. (Это упрощает создание запроса) - person Metalmini; 20.09.2011