Nano Hash - криптовалюты, майнинг, программирование

JAX-RS: сериализация POJO не выполняется на Payara Micro

После переноса нашей войны приложений из Glassfish3 в развертывание с Payara Micro сериализация JAX-RS (jersey + jackson) больше не работает.

Благодаря Адаму мы решили проблему с сериализацией чистых коллекций, мы теперь возникают похожие ошибки при возврате POJO:

@GET
@Produces("application/json")
public BirdyTO findAllDaBirdy() {
    return getBirdy();
}

где BirdyTO - это POJO, который содержит другие POJOS и / или коллекции POJOS.

Это дает нам ошибку:

MessageBodyWriter not found for media type=application/json;charset=utf-8, type=class org.example.BirdyTO, genericType=class org.example.BirdyTO.

Странно то, что похожие интерфейсы в одном приложении работают нормально.

Любая идея?


  • Вы проверили, что .war содержит все необходимые зависимости Джексона? И не могли бы вы добавить код класса BirdyTO. 04.02.2017

Ответы:


1

Отображение POJO в JSON не стандартизировано в Java EE. Glassfih 4 / Payara по умолчанию использует MOXy для сопоставления POJO с JSON, который использует JAXB для сопоставления. См. [Этот пост Резы Рахмана] (https://blogs.oracle.com/theaquarium/entry/moxy_is_the_new_default). Возможно, что BirdyTO не может быть отображен Moxy.

Если вы хотите использовать Джексон, вам необходимо:

  • отключить функцию Moxy по умолчанию (установив для свойства jersey.config.server.disableMoxyJson значение true)
  • добавьте библиотеку Джексона в свое приложение (com.fasterxml.jackson.jaxrs)
  • включите JacksonFeature (предоставленный библиотекой Jackson) в вашем приложении JAX-RS

Подробнее о том, как это сделать, читайте в этом ответе: Настройка маршаллинга JSON с помощью GlassFish v4

04.02.2017
  • Информация о золоте и правильное решение. Большое спасибо! До сих пор не знаю, почему MOXy не может сопоставить некоторые POJO, но я думаю, нам следует придерживаться Джексона, поскольку мы изначально создавали наше приложение с его помощью. 05.02.2017
  • Мы сделали это. Очевидно, что MOXy требует, чтобы у транспортных POJO были конструкторы по умолчанию. 06.02.2017
  • В Java EE 8 отображение должно быть стандартизировано спецификацией JSON-B. До тех пор поведение отличается такими тонкими различиями. Отметьте ответ как правильный ответ :) 06.02.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..