Не удается заставить jackson jsr 310 работать с weblogic 12.2.1

#java #spring #weblogic

#java #весна #weblogic

Вопрос:

Я не могу заставить weblogic обрабатывать java 8 LocalDate. Я развертываю проект spring boot в weblogic, и все остальное работает нормально.

Моя текущая конфигурация для модуля java time работает, если я запускаю приложение как приложение spring boot на встроенном сервере tomcat, но не при развертывании в weblogic.

Это то, что я пробовал до сих пор:

weblogic.xml

 <?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app>
    <weblogic-version>12.2.1</weblogic-version>
    <context-root>/</context-root>
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.slf4j.*</package-name>
            <package-name>org.apache.commons.*</package-name>
            <package-name>com.fasterxml.jackson.*</package-name>
            <package-name>org.codehaus.jackson.*</package-name>
        </prefer-application-packages>

        <prefer-application-resources>
            <resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
        </prefer-application-resources>
    </container-descriptor>
</weblogic-web-app>
  

Конфигурация Джерси

 @Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    return builder;
}
  

Другая конфигурация Джерси, которую я пробовал:

 @Configuration
@ApplicationPath("/rest")
public class JerseyConfig extends ResourceConfig {
    public JerseyConfig() throws JsonProcessingException {
        register(JacksonFeature.class);
        register(JacksonMapperProvider.class);
        packages("my.path");
    }


    public static class JacksonMapperProvider implements ContextResolver<ObjectMapper> {
        @Override
        public ObjectMapper getContext(final Class<?> aClass) {
            final ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.registerModule(new JavaTimeModule());
            objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
            return objectMapper;
        }
    }
}
  

Ожидаемый результат от следующей конечной точки (и результат, который я получаю, когда запускаю его с помощью tomcat)

 @GET
@Path("test")
public LocalDate test() {
    return LocalDate.ofEpochDay(0);
}
  

является:

 "1970-01-01"
  

в weblogic я получаю:

 {"year":1970,"month":"JANUARY","monthValue":1,"dayOfMonth":1,"dayOfWeek":"THURSDAY","era":"CE","dayOfYear":1,"leapYear":false,"chronology":{"id":"ISO","calendarType":"iso8601"}}