Я пытаюсь развернуть войну Spring Boot, которая развертывает OK в Payara Full в Docker (payara / server-full: 4.181)
Если я пытаюсь запустить то же приложение в Payara Micro в Docker (payara / micro: 5.193.1) У меня возникает проблема во время выполнения (см. ниже).
Похоже на версию привязки данных Джексона в нашем приложении 2.8.11.1 (которую мы не можем изменить, поскольку она связана сверсия Spring, которую мы используем) конфликтует с версией (неизвестной), поставляемой с Payara Micro.
web.xml содержит
metadata-complete = "true"
и glassfish-web.xml содержит
делегат загрузчика классов = "false"
в попытке устранить проблемы загрузки классов, связанные с конфликтующими банками.
Есть ли способ исправить это путем изоляции банок в WAR от банок, поставляемых в Payara micro?
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.client.RestTemplate]: Factory method 'restTemplate' threw exception; nested exception is java.lang.VerifyError: Bad return type
Exception Details:
Location:
org/springframework/http/converter/json/Jackson2ObjectMapperBuilder$XmlObjectMapperInitializer.create()Lcom/fasterxml/jackson/databind/ObjectMapper; @10: areturn
Reason:
Type 'com/fasterxml/jackson/dataformat/xml/XmlMapper' (current frame, stack[0]) is not assignable to 'com/fasterxml/jackson/databind/ObjectMapper' (from method signature)
Current Frame:
bci: @10
flags: { }
locals: { 'org/springframework/http/converter/json/Jackson2ObjectMapperBuilder$XmlObjectMapperInitializer' }
stack: { 'com/fasterxml/jackson/dataformat/xml/XmlMapper' }
Bytecode:
0x0000000: bb00 0359 b800 04b7 0005 b0
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
... 220 common frames omitted
Caused by: java.lang.VerifyError: Bad return type
Exception Details:
Location:
org/springframework/http/converter/json/Jackson2ObjectMapperBuilder$XmlObjectMapperInitializer.create()Lcom/fasterxml/jackson/databind/ObjectMapper; @10: areturn
Reason:
Type 'com/fasterxml/jackson/dataformat/xml/XmlMapper' (current frame, stack[0]) is not assignable to 'com/fasterxml/jackson/databind/ObjectMapper' (from method signature)
Current Frame:
bci: @10
flags: { }
locals: { 'org/springframework/http/converter/json/Jackson2ObjectMapperBuilder$XmlObjectMapperInitializer' }
stack: { 'com/fasterxml/jackson/dataformat/xml/XmlMapper' }
Bytecode:
0x0000000: bb00 0359 b800 04b7 0005 b0
at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:584)
at org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter.<init>(MappingJackson2XmlHttpMessageConverter.java:50)
at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:73)
at org.springframework.web.client.RestTemplate.<init>(RestTemplate.java:166)
at org.springframework.web.client.RestTemplate.<init>(RestTemplate.java:195)
at com.ngahr.myview.hermes.common.spring.RestTemplateConfiguration.restTemplate(RestTemplateConfiguration.java:44)
at com.ngahr.myview.hermes.common.spring.RestTemplateConfiguration$$EnhancerBySpringCGLIB$$10e756d1.CGLIB$restTemplate$1(<generated>)
at com.ngahr.myview.hermes.common.spring.RestTemplateConfiguration$$EnhancerBySpringCGLIB$$10e756d1$$FastClassBySpringCGLIB$$e4d63b02.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)
at com.ngahr.myview.hermes.common.spring.RestTemplateConfiguration$$EnhancerBySpringCGLIB$$10e756d1.restTemplate(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
... 221 common frames omitted