Liberty 18.0.0.2:jaxrs-2.0 无法与 ldapRegistry-3.0 一起使用

Liberty 18.0.0.2: jaxrs-2.0 is not working with ldapRegistry-3.0

我正在尝试将我的应用程序从 Liberty 18.0.0.1 升级到 18.0.0.2,但它们现在都失败了:

 java.lang.NoClassDefFoundError: javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
 ...

stacktrace

问题似乎与 ldapRegistry-3.0 有关 - 一旦启用该功能,所有 jax-rs 请求都会失败。删除 ldapRegistry 后,代码工作正常,但我的应用程序需要此功能...

我什至构建了一个小例子来演示它,只有一个 RestEndpoint /v1/api/employee : Sample project server config

这是一个错误吗,我可以在某处报告吗?还是我做错了什么?

这是server dump

谢谢

这似乎是由细微的拆分包类加载冲突引起的。我能够使用 Liberty 18.0.0.2 重现此问题,底层异常如下所示:

java.lang.NoSuchMethodException: javax.xml.bind.annotation.W3CDomHandler.createUnmarshaller(javax.xml.bind.ValidationEventHandler)

在这种情况下,似乎 javax.xml.bind.annotation.W3CDomHandler 是从类加载器 A 加载的,而 javax.xml.bind.ValidationEventHandler 被加载了两次——一次是从类加载器 A 一次是从类加载器 B。我们在这里得到的错误是由由 JVM 寻找 javax.xml.bind.annotation.W3CDomHandler.createUnmarshaller(javax.xml.bind.ValidationEventHandler),其中 类 都来自类加载器 A,但它寻找 createUnmarshaller(ValidationEventHandler) 方法,其中 ValidationEventHandler 来自类加载器 B。

此错误将在下一版本的 Liberty (18.0.0.3) 中解决