我正在尝试使用 CXF 运行 JavaFX Rest 客户端。一个非常简单的测试。当我尝试获取 URL 时,我得到了 org.apache.cxf.BusException: 没有找到命名空间 http://cxf.apache.org/transports/http 的管道发起者。我在这里查看了一些相关问题,但没有运气。任何帮助,将不胜感激。
然后我添加的只有 maven 依赖是 cxf-rt-rs-client 3.1.0
代码是:
WebClient client = WebClient.create("http://www.stackoverflow.com"); client.type("text/html").accept("text/html"); System.out.println(client.get());
堆栈跟踪:

Caused by: org.apache.cxf.BusException: No conduit initiator was found for the namespace http://cxf.apache.org/transports/http.
at org.apache.cxf.bus.managers.ConduitInitiatorManagerImpl.getConduitInitiator(ConduitInitiatorManagerImpl.java:110)
at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:104)
at org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(UpfrontConduitSelector.java:77)
at org.apache.cxf.message.ExchangeImpl.getConduit(ExchangeImpl.java:159)
at org.apache.cxf.interceptor.MessageSenderInterceptor.getConduit(MessageSenderInterceptor.java:71)
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:624)
at org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1100)

最佳答案

阴影会覆盖 bus-extension.txt 文件。以编程方式,您可以通过初始化来修复它。

void initializeCxf() {
    final Bus defaultBus = BusFactory.getDefaultBus();
    final ConduitInitiatorManager extension = defaultBus.getExtension(ConduitInitiatorManager.class);
    extension.registerConduitInitiator("http://cxf.apache.org/transports/http", new HTTPTransportFactory());
}

根据@hba 的评论,如果上述方法不起作用,您也可以尝试以下操作
extension.registerConduitInitiator("http://cxf.apache.org/transports/http", new HTTPTransportFactory(defaultBus));

关于Apache CXF + JavaFX 未找到命名空间的管道启动器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30824206/

10-15 07:11