Весенняя война на Weblogic 12c - PullRequest
0 голосов
/ 06 февраля 2019

У меня возникают ошибки при развертывании с Spring-boot 2.1.2.RELEASE в WebLogic 12.2.1.2.0.

Это трассировка стека:

Caused By: java.lang.IllegalAccessError: tried to access method com.fasterxml.jackson.databind.ser.std.StdSerializer.<init>(Ljava/lang/Class;)V from class com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
at com.fasterxml.jackson.datatype.jsr310.JavaTimeModule.<init>(JavaTimeModule.java:168)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:122)
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.registerWellKnownModulesIfAvailable(Jackson2ObjectMapperBuilder.java:760)
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.configure(Jackson2ObjectMapperBuilder.java:639)
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:623)
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.<init>(MappingJackson2HttpMessageConverter.java:59)
at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:76)
at org.springframework.web.filter.FormContentFilter.<init>(FormContentFilter.java:60)
at org.springframework.boot.web.servlet.filter.OrderedFormContentFilter.<init>(OrderedFormContentFilter.java:29)
at org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.formContentFilter(WebMvcAutoConfiguration.java:166)

I 'я пытался добавить это в файл weblogic.xml:

  <wls:package-name>com.fasterxml.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.databind.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.datatype.jsr310.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.datatype.*</wls:package-name>
      <wls:package-name>com.fasterxml.jackson.module.*</wls:package-name>

Я также пытался использовать классы предпочтения-web-inf.Класс StdSerializer находится в jackson-datatype-jsr310: 2.9.8 jar, что теоретически не должно быть проблемой, потому что в welogic Джексон не включен.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 21 марта 2019

1) Сохраните только эти пакеты в вашем файле weblogic.xml, остальные не нужны:

<wls:prefer-application-packages>
    <wls:package-name>org.slf4j.*</wls:package-name>
    <wls:package-name>org.springframeworks.*</wls:package-name>
    <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
</wls:prefer-application-packages>

2) Включите это в ваш файл pom.xml согласно Spring Docs ,раздел 92.1:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

Эта ошибка возникает из-за того, что Spring Boot пытается запустить контейнер Tomcat, вызывая конфликты путей к классам.Установка зависимости, как предусмотрено, удалит большинство из них, и включение com.fasterxml.jackson. * В ваш weblogic.xml позаботится о остающемся конфликте.

...