Начиная с моей исходной проблемы , я получаю, что мне нужно специально настроить Apache TomEE для использования Джексона в качестве поставщика JSON (вместо стандартного Johnzon).
Я импортировал следующее вmy pom.xml
<dependency>
<!-- I only need this first one because otherwise it's ommited due to a conflict.... -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.9.9</version>
</dependency>
После этого я попробовал несколько способов:
Упоминание поставщика в файле ejb-jar.xml
<pojo-deployment class-name="jaxrs-application">
<properties>
cxf.jaxrs.providers = com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider
</properties>
</pojo-deployment>
Расширение JacksonJaxbJsonProvider с помощью пользовательского класса и его регистрация:
@Provider
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class TGJSONProvider extends JacksonJaxbJsonProvider {
}
Независимо от того, что я делаю (или даже если я ничего не добавляю, у меня одна и та же ПРОБЛЕМА:
2019-05-31 16:11:35 SEVERE org.apache.openejb.observer.ObserverManager$MethodInvocation invoke error invoking org.apache.tomee.webservices.TomeeJaxRsService@12bfd80d
java.lang.NoClassDefFoundError: javax/ws/rs/ext/MessageBodyReader
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
...
...
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.ext.MessageBodyReader
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 55 more
Что я пропускаю / делаю неправильно?
Спасибо.