Разграничение API Джерси, Джексона и JaxB - PullRequest
5 голосов
/ 11 декабря 2011

Привет: Я использовал Джексона для внутренней обработки JSON, и я хочу использовать эти объекты в качестве Jsons для внешнего API (REST) ​​(теперь они хранятся внутри как объекты Java).

Очевидная реализация - написать какой-то механизм запросов, который читает запросы, извлекает объекты из основного хранилища данных, а затем сериализует их в Jsons, используя Джексона.

Однако я начинаю понимать, что существуют API-интерфейсыэто уже может быть использовано для сборки таких веб-сервисов, заботясь о многих обыденных деталях (безопасность, анализ запросов, координация REST).Например, кажется, что аннотации из джерси могут использоваться для определения служб REST ....

Итак, мой вопрос: каков уровень техники в веб-службах на основе Java EE JSON и для чего нужны эти службыиспользовать в качестве хранилищ данных (т. е. Plaintext? RDBMS? Object data services?)

Самое главное ... какова функциональная разница между различными API для отображения данных XML и JSON, например, Джерси / Джексон / JaxB

Ответы [ 3 ]

4 голосов
/ 11 декабря 2011

Помимо Джерси (и других JAX-RS, таких как RESTeasy), которые используют Джексона, вам также может быть полезно использовать что-то вроде jDBI для связывания реляционных данных в POJO.Он делает много вещей, которые делают большие ORM (например, Hibernate), но его проще использовать для наиболее распространенных задач.

Или, если вы предпочитаете Hibernate, используйте модуль Jackson Hibernate для обработки некоторых крайних случаев.может быть при чтении / записи POHO как JSON.

4 голосов
/ 11 декабря 2011

Существует плагин для Джерси, который будет принимать ваши аннотированные объекты JAXB и автоматически сериализовывать их как JSON.Jersey (JAX-RS) - это действительно хорошее предложение.

Вы также можете использовать аннотации JPA для тех же объектов и поставщика JPA, такого как Eclipse Link, для большинства ваших потребностей в базе данных.Базовая реляционная база данных может удовлетворить большинство потребностей веб-сайта.

2 голосов
/ 02 ноября 2017

JAVA выпустила некоторые спецификации, называемые JAX-RS, для стандартизации разработки веб-сервисов RESTfull с использованием J2EE. Эти спецификации являются только определениями, а не конкретной реализацией.

Существуют различные поставщики реализаций этих API (спецификаций). Jersey, RestEasy, RestLet, Apache-cxf - вот несколько таких реализаций, которые можно использовать для реализации сервисов RESTfull в JAVA.

В частности, на Джерси. Оно не ограничивается только реализацией API JAX-RS. Это инфраструктура, которая имеет собственный набор API-интерфейсов, созданный путем расширения возможностей JAX-RS, и предоставляет дополнительные возможности для дальнейшего упрощения разработки REST API-интерфейсов в JAVA.

JAXB обозначает архитектуру Java для привязки XML, которая является еще одной спецификацией, предоставляемой JAVA для маршалинга и демаршаллинга объектов Java в XML и наоборот. Опять же, это просто спецификация, а не конкретная реализация.

Возвращаясь к Джексону, это просто процессор JSON (обычно одна из реализаций JAXB), используемый для маршалинга и демаршаллинга объектов от Java до JSON. Джерси внутренне использует Джексона для преобразования объектов Java в JSON и наоборот.

...