Каков наилучший способ анализа данных с использованием одного и того же API-интерфейса между веб-сервисом JEE Restfull и Android? - PullRequest
0 голосов
/ 20 февраля 2019

У нас есть большой проект, который состоит из модулей JEE, клиентских приложений JAVA, приложений Android и других самодельных java-проектов.

Из-за разнообразия проектов мы решили сделать проекты java libs и проекты java entity, общие для JEE, клиентских приложений Java и приложений Android, с целью ограничения избыточности кода между проектами.

Вначале у нас были только Java-клиенты и веб-службы Restfull на стороне сервера JEE, которые обменивались данными с помощью JAXB XML Binding API.Поэтому было легко использовать аннотации JAXB для наших классов в проекте сущностей (который устанавливается как зависимость от проекта клиента Java и проектов JEE).Обе стороны могут легко кодировать и декодировать данные XML с одинаковыми аннотациями.

Теперь, когда у нас есть приложение для Android, я хотел использовать один и тот же способ обмена данными.Дело в том, что JAXB «обесценился» на Android.Итак, я обнаружил в libson Jackson, что есть параметр JaxbAnnotation для получения данных, который связан с JAXB, но я не убежден в полной совместимости решения.

Я также пытался использовать привязку JSON, так как видел, что JSON-B будет стандартом в JavaEE 8, но, похоже, ему нужны классы JavaEE API, и я не думаю, что было бы хорошо добавить его в проект Android,

Итак, мой вопрос: какова лучшая практика для обмена данными между веб-службами JEE Restfull и приложением Android с использованием одной и той же зависимости сущности (и того же API синтаксического анализа) и ограничением аннотации привязки XML или JSON для объектов сущности?

Я надеюсь, что вы хорошо поймете проблему.

Спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Давайте назовем ваш объект сущности entities-module.Этот проект содержит POJO классы с аннотациями JAXB, такими как: @XmlElement, @XmlType и т. Д. Поскольку, как вы писали, « JAXB« устарел »на Android », вам нужновыберите между: прочитайте JAXB аннотации другими инструментами или создайте новую настроенную POJO структуру.

Чтение аннотаций JAXB другими инструментами * Библиотека 1013 * Jackson имеет хорошую поддержку аннотаций JAXB.Все, что вам нужно сделать, это использовать модуль jackson-module-jaxb-annotations.Это легко зарегистрироваться, и если вы уже используете Jackson для сериализации / десериализации JSON, это очевидный выбор.Как это сделать, вы можете найти ответы на этот вопрос на SO: Использование JAXB с Google Android .
Плюсы: Вам не нужно создавать новые POJO s схема. В случае изменений в Restful API вы используете следующую версию entities-module проекта. Минусы: Проблемы с включение JAXB при Android. Проблемы производительности, связанные с использованием тяжелых JAXB и Jackson слоев модулей. Новый модуль

Второй вариант - создать новый модуль с POJO s и использовать более быструю и меньшую библиотеку, такую ​​как SimpleXML.
Плюсы:

  • Повышение производительности
  • Нет проблем со сборкой приложения с устаревшими JAXB классами.
  • Вы можете оптимизировать структуру: игнорировать неиспользуемые поля, выбирать лучшие типы и т. Д.

Минусы:

  • Вам необходимо создать новый модуль с новой структурой классов.
  • Изучить и поддерживать новую библиотеку
  • В случае изменений вAPI вам нужно продублировать изменения в нескольких модулях.

Вам нужно взглянуть на приведенный выше список pros and cons и решить, что для вас лучше.

Я бы хотелТакже хотелось бы добавить еще две опции:

  1. Заменить JAXB аннотации Jackson аннотациями.Jackson имеет действительно хорошую поддержку XML, кроме JSON.Это позволит вам легко поддерживать форматы JSON и XML в вашем API.Кроме того, вы можете использовать библиотеку Jackson в Android.
  2. Создать новое приложение JSON API для Android.В основном, UI потоки на Android приложении отличаются от Web App, и вам, вероятно, все равно придет в голову эта идея.
...