Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: MetalminiОтветов: 2

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

netbeansrestglassfishwadl

Ответы

Ответ 1 · Mathias

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

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

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

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

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

Ответ 2 · perissf

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы