Что произойдет, если у нас есть и jackson-jaxrs-json-provider, и jersey-media-json-binding.jar в пути к классам в каталоге /WEB-INF/lib?

Я работаю над веб-приложением, управляемым Apache ant builder. Недавно мы обновили джерси с 2.17 до 2.35 и все связанные зависимости в пути к классам. После обновления я заметил одну ошибку, когда аргумент метода PSOT заполняется как нуль.

Немного покопался, чтобы решить эту проблему, обнаружил, что jersey-media-json-binding.jar может быть причиной проблемы. Удалил его из пути к классам, и все работает нормально.

Но я не могу понять, почему проблема возникла в первую очередь, каково использование этой библиотеки jersey-media-json-binding.jar.

Обеспечивают ли jersey-media-json-binding.jar и jackson-jaxrs-json-provider-2.12.2.jar одинаковую функциональность, которая вызывает проблему?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

JSON-B — новый поставщик По умолчанию. Если он у вас есть в пути к классам (без явной регистрации других провайдеров), то будет использоваться будем. Раньше по умолчанию было МОКСИ. Если вы хотите, чтобы Джексон использовался независимо от того, какой провайдер находится в пути к классам, просто зарегистрируйте JacksonFeature в своем приложении. Все три этих провайдера используются для поддержки JSON, но все они по-разному относятся к (де)сериализации. Кроме того, все эти модули провайдеров имеют автоматическую регистрацию, что означает, что вам не нужно их явно регистрировать. Но есть предопределенное поведение является относительно того, какой из них будет иметь приоритет (если присутствует более одного). Поэтому, если вы хотите, чтобы использовался какой-то конкретный элемент, независимо от того, какой из них находится в пути к классам, просто зарегистрируйте его функцию (например, JacksonFeature, JsonBindingFeature, MoxyJsonFeature).

Если я правильно понимаю, в моем случае, когда я удаляю банку jason-b из пути к своим классам, я в основном отменяю ее регистрацию, и, поскольку у меня также есть jackson-jaxrs-json-provider , мое приложение будет использовать его как провайдер и (де) сериализовать запросы и ответы приложения? Также мне не нужно явно регистрировать права JacksonFeature, используя JacksonFweature.class, верно? Так как это имеет возможность автоматической регистрации.

yuhubug 28.03.2022 19:49

Довольно много....

Paul Samsotha 28.03.2022 20:50

Другие вопросы по теме