问题标签 [cxf-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
854 浏览

apache-camel - Camel cxfws producer,POJO格式,抛出“Get the wrong parameter size to invoke the out service”错误

我有与使用 Java DSL 的 Camel CXF POJO 模式类似的情况,其中

以下是我在“GetReport”操作中遇到的错误。

这是我正在处理的操作的绑定信息。

作为交换主体的一部分,我将发送带有 CredentialHeader、GetReport 对象的对象列表以及必要的数据。我还为响应消息添加了持有者参数。

这是 cxfEndpoint 配置。

我不明白的是,为什么 cxf 需要 7 个参数?那 7 个参数是什么?我尝试通过添加一些空值将其设为 7,但由于“参数类型不匹配”错误而失败。请帮助我理解此特定操作中的输入消息部分。

0 投票
1 回答
886 浏览

ssh - 如何在 JAX-RS / Apache CXF 中设置主机标头

我正在尝试通过 HTTPS 访问服务,但由于网络设置限制,我试图通过 ssh 隧道发出请求。

我使用如下命令创建隧道:

ssh -L 9443:my-service.com:443 sdt-jump-server

该服务只能通过 HTTPS 使用,它使用自签名证书托管,并且它位于负载均衡器后面,该负载均衡器使用主机名或显式 Host 标头将传入请求路由到适当的后端服务。

我可以使用 curl 从我的本地系统调用端点

curl -k -H '主机:my-service.com' https://localhost:9443/path

但是,当我尝试使用 JAX-RS 的 CXF 3.1.4 实现来发出相同的请求时,我似乎无法使其工作。我配置了一个 hostnameVerifier 以允许连接,下载了服务器的证书,并将其添加到我的信任库中。现在我可以连接了,但负载均衡器似乎没有遵守我试图设置的 Host 标头。

我迷失了一会儿,直到我设置-Djavax.net.debug并看到传递的 Host 标头实际上是localhost我设置的值而不是我设置的值。如何让 CXF 尊重我设置的 Host 标头,而不是使用 WebTarget 的 URL 中的值?!

0 投票
1 回答
1283 浏览

java - 如何在 CXF 管道上设置 TLS 参数?

我的应用程序有两个传出 SOAP 连接。对于那些,我想实现 TLS。两者都是使用 CXF 创建的。

返回一个单独的javax.xml.ws.Service.getPort()bindingProvider(两个连接都使用自己的 WSDL),但都使用相同的org.apache.cxf.bus.spring.SpringBus实例。

在使用 bindingProvider 之前,我在 Conduit 上设置了 TLS 客户端参数:

问题是,检索到的客户端对于两个连接都不同,但管道是同一个对象。因此,当我在同一对象上设置第二个连接的参数时,我会覆盖先前设置的设置。

常见问题解答是否 CXF 是线程安全的,“是”和一些例外情况。我认为第二个例外适用于此。它说:

CXF 回答: CXF 代理对于许多用例来说都是线程安全的。例外情况是:

  • [...]

  • 管道上的设置 - 如果您使用代码或配置直接操作管道(例如设置 TLS 设置或类似设置),则这些不是线程安全的。管道是每个实例的,因此这些设置将被共享。此外,如果您使用 FailoverFeature 和 LoadBalanceFeatures,则会即时更换管道。因此,在导管上设置的设置在用于设置线程之前可能会丢失。

  • [...]

对于导管问题,您可以安装一个使用本地线程或类似线程的新 ConduitSelector。不过这有点复杂。

我不完全确定线程安全是否是我的问题。我在各自的组件中创建了两个连接。Springs 只使用一个线程来初始化所有组件,因此两个连接都由同一个线程初始化。但之后,连接使用了来自池的线程。覆盖设置发生在初始化期间,因此在使用不同线程发送实际 SOAP 消息之前。

当在 中创建 Conduit 时org.apache.cxf.endpoint.AbstractConduitSelector#getSelectedConduit,它是使用SpringBus两个对象的相同实例来完成的。

所以,FAQ 告诉我使用我自己的自定义 ConduitSelector。我尝试在上面的初始化之前设置它:

我在初始化后尝试了同样的方法。在这两种情况下,在设置了管道选择器之后,当某些东西使用 BindingProvider(它是一个代理对象)时,它会得到一个 NullPointerException,尽管该对象不为空。

我的问题是让自定义管道选择器运行,或者看看我的问题可以完全不同地解决,或者只是为了获得一些灵感:)

SO上的某个人似乎在这里解决了这个问题,但他的问题的答案对我没有帮助。

0 投票
1 回答
765 浏览

java - apache cxf MultiPart 请求没有 Content-Length 标头

我有以下代码来发送多部分/表单数据请求。

在我的 RestClient 类中,我使用以下代码行使用 JAX-RS 客户端对象发送 POST 请求

我使用 Wiremock 检查了 HTTP 请求正文,如下所示:

我想知道请求有效负载中如何缺少内容长度标头。有没有办法将内容长度标头设置为请求?

请帮我。

0 投票
1 回答
1725 浏览

spring - cxf + spring boot中的日志管理

我有Spring boot server,它的工作方式就像proxy. 它是SOAP serviceSOAP client。用户在我的服务器上调用肥皂服务,而我的服务器调用另一个肥皂服务。两种服务都使用一个WSDL. 我的服务器实现了这一点WSDL并充当客户端的服务器。我的服务器使用它WSDL来请求另一台服务器并充当另一台服务器的客户端。

我需要管理 SOAP 日志,但我遇到了问题。例如,我可以添加到 logback 下一行:

但是通过这种方式,我可以管理传入和传出消息的日志。

因为我的服务和客户使用MessageExchangePortType.

如何管理每个客户端/服务器日志?

这是客户端的实现:

这是服务器的实现:

并在配置中:

例如,我想REQ_IN在客户端禁用日志并在服务器上启用,但如果我写:<logger name="org.apache.cxf.services.MessageExchangePortType.REQ_IN" level="ERROR" />

我将错误级别设置为客户端和服务器,因为MessageExchangePortType使用客户端和服务器。

0 投票
0 回答
209 浏览

jersey - 泽西依赖树问题

以前我们为项目的不同组件使用 Jersey 1.17 和 org.apache.cxf 2.6.0 版本。现在我们的项目迁移到 Jersey 1.19.4 和 cxf 3.2.6 。我看到 jersey 1.19.4 持有 javax.ws.rs:jsr311-api:jar:1.1.1 而 cxf 3.2.6 持有 javax.ws.rs:javax.ws.rs-api:jar:2.1 。所有组件都编译成功,没有任何故障。但是在应用程序中,我们面临以下问题:-

2018 年 10 月 17 日上午 10:29:08 org.apache.catalina.core.StandardWrapperValve 调用严重:Servlet.service() for servlet [CA Service REST API] in context with path [/caservice] throw exception [Servlet execution throw an异常] 根本原因 java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 在 javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:120) 在 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:669) 在 javax.servlet.http.HttpServlet .service(HttpServlet.java:742) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain。

升级后这是我的依赖树结构

0 投票
0 回答
403 浏览

cxf - cxf https 分块不起作用,我已经尝试通过配置并在 java 中显式

我正在尝试为我的 java web 应用程序关闭分块。我们使用 apache cxf 并且正在使用肥皂服务。

  1. 我更改了配置文件中的管道设置
  1. 手动设置

它们都不起作用,任何超过 4k 的请求我都看到了 transfer-encoding: chunked

另一个问题:cxf 中的 HTTPS 和 HTTP 是否有不同的设置?

0 投票
0 回答
109 浏览

cxf - 具有 NTLM 身份验证的 Maven cxf-codegen-plugin - 因 java.io.IOException 失败:服务器返回 HTTP 响应代码:URL 为 401

我正在尝试为cxf-codegen-plugin通过 NTLM 保护的 SOAP Web 服务生成 Java 代码。我不确定如何在生成 java 代码时将用户名/密码/域信息传递给 maven 以连接到远程服务器。我可以使用浏览器使用我拥有的用户名/密码/域组合打开 wsdl。但是,我想知道如何通过命令行通过将一些额外的 vm args 传递给 - 来做到这一点mvn package。或者我可以做任何其他插件配置来帮助我做到这一点?

0 投票
1 回答
289 浏览

java - 在 cxf-rt-frontend-jaxrs-3.3.0 中找不到 JAXRSClientFactory

org.apache.cxf.jaxrs.client.JAXRSClientFactory用来从一个正确注释的接口中创建一个 REST 客户端。

但是,我需要将cxf-rt-frontend-jaxrs版本从2.7.18to更新,3.3.0因为我的代码中的其他地方WebApplicationException被使用,并且开始引发版本的编译错误2.7.18

但是,在更新到3.3.0最新版本之后,client包本身已经从jaxrs包中消失了。

谁能告诉我在哪里可以找到JAXRSClientFactory新罐子里的东西。Meseems 它已被完全删除。

0 投票
0 回答
110 浏览

cxf - 没有斜杠的 CXF WSDL 命名空间

我用 Apache CXF 3.3.0 从 Java 类生成了一个 WSDL,我得到了这个:

我不明白为什么 tns 以“/”结尾,所以我检查了源 Apache CXF,我发现 JaxWsImplementorInfo 调用 PackageUtils ( https://github.com/apache/cxf/blob/master/core/src/main/ java/org/apache/cxf/common/util/PackageUtils.java ) 方法返回:

所以,我有一个结束斜线。

我想得到这个:

那怎么办?

非常感谢,