【发布时间】:2022-12-24 02:21:23
【问题描述】:
在部署在 liberty 服务器上的 springboot 应用程序中,我需要调用 REST 服务器,因此,在配置服务提供商以实例化 apache-cxf 堆栈之后,我写下了经典的两行代码
final Client client = ClientBuilder.newBuilder().build(); //plus some other configuration
//method invocation
target = client.target(uri);
第二种方法导致标题中出现异常。
正如 this link 中所述,我在其 2.0 和 2.1 版本上都添加了 jaxrs 功能,但没有成功。
任何帮助表示赞赏。
PS:完整的堆栈跟踪是
org.apache.cxf.bus.extension.ExtensionException: Could not find constructor for class org.apache.cxf.ws.policy.PolicyDataEngineImpl for args [com.ibm.ws.jaxrs20.bus.LibertyApplicationBus@f13055b3].
at org.apache.cxf.bus.extension.Extension.load(Extension.java:266) ~[cxf-core-3.0.12.jar:3.0.12]
at org.apache.cxf.bus.extension.ExtensionManagerImpl.loadAndRegister(ExtensionManagerImpl.java:198) ~[cxf-core-3.0.12.jar:3.0.12]
at org.apache.cxf.bus.extension.ExtensionManagerImpl.initialize(ExtensionManagerImpl.java:116) ~[cxf-core-3.0.12.jar:3.0.12]
at org.apache.cxf.bus.extension.ExtensionManagerBus.doInitializeInternal(ExtensionManagerBus.java:260) ~[cxf-core-3.0.12.jar:3.0.12]
at org.apache.cxf.bus.extension.ExtensionManagerBus.initialize(ExtensionManagerBus.java:250) ~[cxf-core-3.0.12.jar:3.0.12]
at com.ibm.ws.jaxrs20.bus.LibertyApplicationBusFactory.createBus(LibertyApplicationBusFactory.java:135) ~[na:na]
at com.ibm.ws.jaxrs20.client.bus.LibertyJAXRSClientBusFactory.createClientScopedBus(LibertyJAXRSClientBusFactory.java:59) ~[na:na]
at com.ibm.ws.jaxrs20.client.bus.LibertyJAXRSClientBusFactory.getClientScopeBus(LibertyJAXRSClientBusFactory.java:98) ~[na:na]
at com.ibm.ws.jaxrs20.client.JAXRSClientImpl.target(JAXRSClientImpl.java:207) ~[com.ibm.ws.jaxrs.2.0.client_1.0.48.jar:na]
at org.apache.cxf.jaxrs.client.spec.ClientImpl.target(ClientImpl.java:158) ~[na:na]
【问题讨论】:
-
听起来像是不兼容的版本冲突
-
听起来不错,但是在 cxf-core-3.0.12 中,类 org.apache.cxf.ws.policy.PolicyDataEngineImpl 有一个接受 org.apache.cxf.Bus 的构造函数,所以异常似乎没有任何权利被提高
-
可能是您正在使用的服务器具有相同的库但版本不同,并且正在使用该版本。或者有另一个依赖拉入不同的版本。
标签: java spring-boot jax-rs websphere-liberty cxf-client