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
...
问题似乎与 ldapRegistry-3.0 有关 - 一旦启用该功能,所有 jax-rs 请求都会失败。删除 ldapRegistry 后,代码工作正常,但我的应用程序需要此功能...
我什至构建了一个小例子来演示它,只有一个 RestEndpoint /v1/api/employee : Sample project server config
这是一个错误吗,我可以在某处报告吗?还是我做错了什么?
谢谢
这似乎是由细微的拆分包类加载冲突引起的。我能够使用 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) 中解决
我正在尝试将我的应用程序从 Liberty 18.0.0.1 升级到 18.0.0.2,但它们现在都失败了:
java.lang.NoClassDefFoundError: javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
...
问题似乎与 ldapRegistry-3.0 有关 - 一旦启用该功能,所有 jax-rs 请求都会失败。删除 ldapRegistry 后,代码工作正常,但我的应用程序需要此功能...
我什至构建了一个小例子来演示它,只有一个 RestEndpoint /v1/api/employee : Sample project server config
这是一个错误吗,我可以在某处报告吗?还是我做错了什么?
谢谢
这似乎是由细微的拆分包类加载冲突引起的。我能够使用 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) 中解决