#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"}}