Я работаю над веб-приложением, управляемым 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 одинаковую функциональность, которая вызывает проблему?
JSON-B — новый поставщик По умолчанию. Если он у вас есть в пути к классам (без явной регистрации других провайдеров), то будет использоваться будем. Раньше по умолчанию было МОКСИ. Если вы хотите, чтобы Джексон использовался независимо от того, какой провайдер находится в пути к классам, просто зарегистрируйте JacksonFeature
в своем приложении. Все три этих провайдера используются для поддержки JSON, но все они по-разному относятся к (де)сериализации. Кроме того, все эти модули провайдеров имеют автоматическую регистрацию, что означает, что вам не нужно их явно регистрировать. Но есть предопределенное поведение является относительно того, какой из них будет иметь приоритет (если присутствует более одного). Поэтому, если вы хотите, чтобы использовался какой-то конкретный элемент, независимо от того, какой из них находится в пути к классам, просто зарегистрируйте его функцию (например, JacksonFeature
, JsonBindingFeature
, MoxyJsonFeature
).
Довольно много....
Если я правильно понимаю, в моем случае, когда я удаляю банку jason-b из пути к своим классам, я в основном отменяю ее регистрацию, и, поскольку у меня также есть jackson-jaxrs-json-provider , мое приложение будет использовать его как провайдер и (де) сериализовать запросы и ответы приложения? Также мне не нужно явно регистрировать права JacksonFeature, используя JacksonFweature.class, верно? Так как это имеет возможность автоматической регистрации.