Apache CXF + JavaFX找不到命名空间的管道启动器

Mar*_*cia 4 apache javafx cxf

我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

smi*_*hra 5

阴影将覆盖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());
}
Run Code Online (Sandbox Code Playgroud)

根据@hba的评论,如果上述方法无效,您也可以尝试以下方法

extension.registerConduitInitiator("http://cxf.apache.org/transports/http", new HTTPTransportFactory(defaultBus));
Run Code Online (Sandbox Code Playgroud)


Dav*_*ski 0

您对 Maven 依赖关系很满意。

\n\n

客户端建设看起来有点不对劲CXF 3.x 指南,其中支持 JAX-RS 2.0。

\n\n

请参阅AX-RS 2.0 客户端 API

\n\n

试试这个代码:

\n\n
    WebTarget target = ClientBuilder.newClient().target("http://stackoverflow.com/");\n\n    Response response = target.request().get();\n    System.out.println(response.getEntity().getClass().getName());\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用此代码,您将了解到响应实体是一个输入流.. 一个字符序列,是 StackOverflow 主页的 HTML 内容。

\n\n

如果您喜欢冒险,并且为了证明我不是江湖骗子,请将以下依赖项添加到您的 POM 中:

\n\n
<dependency>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-io</artifactId>\n    <version>1.3.2</version>\n</dependency> \n
Run Code Online (Sandbox Code Playgroud)\n\n

然后尝试这个:

\n\n
    WebTarget target = ClientBuilder.newClient().target("http://stackoverflow.com/");\n    System.out.println(IOUtils.toString((InputStream) target.request().get().getEntity(), "UTF-8"));\n
Run Code Online (Sandbox Code Playgroud)\n\n

您将获得 StackOverflow 主页 \xe2\x80\x93 的文本呈现(在标准输出上),相当于在浏览器中执行“查看源代码”操作。

\n\n

我不知道您的最终目标是什么,但如果您尝试从 StackExchange 网络上的信息构建任何有用的内容,我建议使用此处记录的 API记录的 API 。

\n\n

祝你好运!

\n


归档时间:

查看次数:

2388 次

最近记录:

8 年,11 月 前