Weblogic 12.2.1.4.0 использует Jackson Fasterxml вместо Codehaus Jackson

Наши приложения будут развернуты на серверах Weblogic версии 12.2.1.4.0. Мы полностью удалили использование codehaus jackson из нашего кода и хотим вместо этого использовать jackson fastxml в версии 2.13.2. Во время теста мы столкнулись с некоторыми проблемами.

Похоже, что Джерси случайным образом переключается между codehaus jackson (который все еще существует в библиотеках веб-логики) и библиотеками fastxml, которые мы развертываем вместе с нашими приложениями.

Чтобы решить проблему, мы безуспешно добавили это в файл weblogic.xml приложения:

      <container-descriptor>
    <prefer-application-packages>
        <package-name>com.fasterxml.jackson.*</package-name>
    </prefer-application-packages>
</container-descriptor>

При каждом развертывании мы видим разные результаты. Мы протестировали это, добавив компонент с LocalDate в ответ службы отдыха.

Иногда мы видим

{"year":2023,"month":"MARCH","dayOfMonth":9,"monthValue":3,"era":"CE","dayOfWeek":"ЧЕТВЕРГ","dayOfYear":68," jumpYear":false,"chronology":{"id":"ISO","calendarType":"iso8601"}}}

и иногда мы видим

{"localDate":"2023-03-09"}

в результате. С помощью модульных тестов мы проверили выходные данные codehaus/fasterxml ObjectMapper при преобразовании в текст, поэтому мы предполагаем, что он случайным образом переключается между версией codehaus и fastxml.

Что мы развертываем вместе с приложением:

  • Джексон-привязка данных
  • Джексон-тип данных-jsr310
  • Джексон-ядро
  • Джексон-аннотации
  • Джексон-jaxrs-json-провайдер

Мы отключаем Moxy, добавляя в приложение следующие свойства:

props.put("jersey.config.server.disableMoxyJson", Boolean.TRUE);

Кроме того, для JSR310 мы добавляем ContextResolver, который регистрирует JavaTimeModule с помощью Fastxml ObjectMapper.

В файле web.xml приложения мы дополнительно устанавливаем поставщика джерси, используя следующий параметр контекста:

      <context-param>
    <param-name>jersey.config.server.provider.classnames</param-name>
    <param-value>com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</param-value>
</context-param>

Не могли бы вы сообщить мне, если что-то не так с этой конфигурацией? На самом деле мы хотим, чтобы Джерси всегда использовал новую реализацию Fasterxml вместо старой версии codehaus.

0 ответов

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