Я пишу приложение Jax-RS с использованием Джерси и Jackson2 под капотом для облегчения ввода/вывода JSON. Сама услуга отлично работает, но я бы хотел ее улучшить, если картостроитель Джексона автоматически выполняет сериализацию/десериализацию даты и времени на объекты JodaTime.Зарегистрировать JodaModule в приложении Jax-RS
Я после документации here и добавил соответствующие банки, но я потерял на этой инструкции:
Registering module
To use Joda datatypes with Jackson, you will first need to register the module first (same as with all Jackson datatype modules):
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
Я попытался сделать это в пользовательском классе, который расширяет jax.ws .rs.core.Application, но я не совсем уверен в этом решении. В настоящее время я получаю эту ошибку:
Can not instantiate value of type [simple type, class org.joda.time.DateTime] from String value ('2014-10-22'); no single-String constructor/factory method
at [Source: org.glassfish.jersey.me[email protected]3471b6d5; line: 7, column: 25]
Другого, чем общее впечатление, что этот модуль регистрация должна произойти при применении (? Сервлет) запуск, я понятия не имею, что делать с этой информацией. Нужно ли мне комментировать пользовательский класс с чем-то, в частности, чтобы его подхватили? Должен ли я распространять некоторый класс?
Примеры, которые я нахожу в StackOverflow, обычно вставляют его в main()
и вызывают непосредственно транслятор, но я полагаюсь на Jackson Databinding, поэтому примеры не актуальны. Любое направление приветствуется.
Отлично! Именно то, что мне нужно. – JHarnach
Как я могу достичь этого с помощью JAX-RS-клиента? –
@ thomas.mc.work он должен работать точно так же для клиента. Вы можете явно зарегистрировать его, если по какой-то причине он не получает автоматически –