问题标签 [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 投票
0 回答
296 浏览

spring - Apache CXF 处理程序问题

我面临 CXF 处理程序的问题(使用 CXF 版本 2.7.6)。在我的 xml 文件中,定义了多个 Web 服务客户端。我为服务 1 添加了一个简单的处理程序。

现在上面的配置导致

org.apache.cxf.interceptor.Fault:客户端已经关闭。

当使用第二个服务 (service2) 并且 service1 工作正常时。但是以下配置对于这两种服务都可以正常工作。

为什么订单会引起问题?添加到一个客户端的处理程序会影响另一个客户端吗?

0 投票
1 回答
554 浏览

cxf - CXF webservice 客户端抛出 IllegalArgumentException 算法套件“Basic128Exn256”未注册

寻找关于 CXF webservice 客户端的指导

Cxf 版本:3.2.1 Web 服务客户端是一个独立的 java 程序。未配置 Web 服务器。

我有来自服务提供商的 wsdl 文件

<wsp:Policy>标签内。

但是,当启动 cxf 客户端时,我得到一个异常如下

同样的 wsdl,当我编写一个没有 cxf 的纯 jax-ws 客户端时,它可以工作。任何帮助表示赞赏

0 投票
1 回答
863 浏览

java - 如何在 weblogic 12c 上调用 ws-security/wss4j CXF webclient

我不确定我是否对 wssecurity 有正确的理解,所以请按照我需要做的事情的顺序纠正我,我会尝试解释我的问题。

我正在尝试从启用策略的 wsdl 实现 jaxws 客户端,策略如下所示:

我成功地创建了一个独立的 cxf 客户端与安全的 web 服务进行通信,主要是因为 cxf 框架中的这些依赖关系

这些具有提供标题的自动性质,并在幕后做了很多我不明白的事情,但它确实有效。我的客户端设置很简单:

现在我的问题,我已经看到它工作了,所以我很高兴地将我的客户端移动到在 weblogic 12c 上运行的 web 应用程序,但现在事情出了问题。cxf-rt-ws-policy 良好的自动特性现在消失了,我收到没有导致错误的标头的肥皂请求:

{ http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 }UsernameToken:收到的令牌不符合令牌包含要求 { http://docs.oasis-open.org/ws- sx/ws-securitypolicy/200702 }AsymmetricBinding:收到的时间戳不符合要求 { http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 }InitiatorToken { http://docs.oasis- open.org/ws-sx/ws-securitypolicy/200702 }X509Token:收到的令牌与令牌包含要求不匹配 { http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 }IncludeTimestamp { http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 }ProtectTokens {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 }OnlySignEntireHeadersAndBody { http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 }SignedParts: { http ://www.w3.org/2003/05/soap-envelope }正文未签名

没有标题的结果。

幸运的是,只要 web 服务没有安全要求,我通常在 weblogic 上运行 cxf 客户端没有任何问题。我工作的独立客户端中没有弹簧或弹簧引导程序,也许 cxf 本身已经调用了弹簧,但我没有帮助。

在 weblogic 上运行时,取自 cxf 框架的“PolicyInterceptorProviderRegistryImpl”停止工作。我怀疑这与 cxf bus-extensions.txt 在容器中运行时的工作方式不同有关。抱歉,在 weblogic 上的 web 应用程序中没有 Spring 可用。但我的独立工作正常,没有任何弹簧。cxf框架上的任何人请帮助!:)

那么为什么它独立工作而不是在容器中运行时。任何人都可以帮忙吗?

提前致谢 :)

0 投票
1 回答
626 浏览

java - 响应迟到时,Cxf 客户端花费的时间太长

我正在将 cxf 库用于 Web 服务客户端。

当响应迟到大约 5 秒时,cxf 需要大约 20 秒才能返回响应。ws 返回一个33912长响应。

不过,客户对快速响应没有任何问题。

我找不到问题所在。我测试了 ws 端点,它在 8 秒内返回最大值。但是 cxf 客户端有时需要 30-50 秒。

我打开调试日志,这两行之间需要9秒

2018-01-11 17:17:14.022 DEBUG 10492 --- [nio-8086-exec-6] o.apache.cxf.transport.http.HTTPConduit:将带有标头的 POST 消息发送到 http://example.com/服务 管道:{ http://example.com./ }ExampleWebServicePort.http-conduit

2018-01-11 17:17:23.370 调试 10492 --- [nio-8086-exec-6] org.apache.cxf.endpoint.ClientImpl :总线贡献的拦截器:[org.apache.cxf.ws.policy. PolicyInInterceptor@3ec595ab]

这是客户端:

什么可能导致这个问题?

0 投票
1 回答
55 浏览

grails-2.2 - Grails 插件 cxf-client-1.5.4 故障转移

从 Maven Repository 下载的 cxf-client-1.5.4,不包含有关重试策略的故障转移功能的任何配置。但是,在生产过程中负载较重和速度较慢的情况下,我从日志中观察到并怀疑正在发生重试。

CXF 插件中是否为 Grails 配置了重试策略?如果是,如何停止重试。

0 投票
0 回答
359 浏览

java - 部署在 Webshpere 8 (EAR) 上的 CXF 客户端失败 NoSuchFieldError XmlSchemaForm.QUALIFIED

SOAP使用Apache CXFand开发了一个客户端,maven当我从 Eclipse、JUnit 或 shell 运行它时它工作正常。但是当我将它打包EAR并部署在 上时Websphere 8,它会失败并出现错误:

java.lang.NoSuchFieldError:org/apache/ws/commons/schema/XmlSchemaForm.QUALIFIED

代码:

POM.xml

堆栈跟踪:

0 投票
0 回答
639 浏览

java - Camel CXFRS 客户端端点 - 基本身份验证集 Cookie 标头为空

起初很抱歉我的英语不好!

情况:

我目前在 Jboss Fuse 6.3 上使用 Camel (2.17)、Blueprint 和 CXF Rest Client。我尝试使用 CXF-RS 消费者(客户端)端点调用 RESTFUL Web 服务(服务器)。使用 Basic Auth 进行身份验证,并尝试使用响应中的身份验证 cookie (Set-Cookie) 来获取更多请求。Camel 中的 rsClient 端点作为普通 HTTP 客户端运行。

问题:

一切似乎都运行良好,我可以调用目标 web 服务。来自 cxf 的出站和入站消息看起来非常好。入站响应设置并填充了 set-cookie-header。但是在 CXF 端点完成他的工作并且路由进一步进展之后......标题“Set-Cookie”丢失/为空!我用一个日志端点甚至用一个骆驼处理器豆检查了它。交换不再包含“set-cookie”标头。我也使用 camel-http4 端点进行了尝试,并且正确维护了“Set-Cookie”标头。

在这种情况下我做错了什么?

我的简单骆驼路线如下所示:

我的 CXF 休息客户端配置:

工作http4路线:

谢谢!

0 投票
1 回答
5504 浏览

java - Apache CXF client soap fault handling

I am using apache cxf client 3.2.2 in a standalone java application to make invocations to some soap webservices.

Trying to get the soap fault code and fault string in a one way operation but without success.

I have defined a custom interceptor but it never reaches the handleMessage

The code from the custom interceptor

}

The exception I am getting is in MessageSenderEndingInterceptor (which is in the PREPARE_SEND phase).

It is throwing a new Fault, with the text "Could not send message". What is strange is that the exception catched is "HTTP response '500: Internal Server Error' when communicating with ..."

If I send the same request with soapui I see the fault code and fault string

Any ideas, or what can I do to get the fault code and fault string? Any good documentation of client interceptors in cxf?

Update:

Seems it is not possible to get the fault code and fault string in a one way operation with cxf client as the server does not meet SOAP and WSI standards.

Anyway I was not able to bypass the exception and log the fault string and fault code. Tried commenting the one way annotation in the generated code but still the interceptor never gets executed. I could not find good examples on how to implement an interceptor on the client side to handle faults.

More info:

The specification of WS-I for one way operations. From the definition "..For example, a "500 Internal Server Error" HTTP response that contains a fault can not be returned in this situation."

Apart from this, the error "Could not send message" is quite confusing as the request was sent but it is already reported here

0 投票
0 回答
190 浏览

jboss - JBoss EAP + Fuse 6.3 - 部署 CXF 时 JAXBDataBinding 的 ClassCastException

我正在尝试在 JBoss EAP v6.4 上部署一个熔断器项目(JBossFuse v6.3)。战争中有一条简单的路线公开了一个肥皂 CXF 端点。我将 CXF 依赖项声明为已配置的 jboss-deployment-structure 以包含放置在 EAP 中的 CXF 模块。当 EAP 启动时,由于 JAXBDataBinding 的 ClassCastException,路由未初始化。

引起:java.lang.ClassCastException:在 org.apache.cxf.common.classloader 的 java.lang.Class.asSubclass(未知来源)[rt.jar:1.8.0_141] 的类 org.apache.cxf.jaxb.JAXBDataBinding .ClassLoaderUtils.loadClass(ClassLoaderUtils.java:269) 在 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.getJAXBClass(ReflectionServiceFactoryBean.java:239) 在 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.createDefaultDataBinding (ReflectionServiceFactoryBean.java:219) ... 43 更多

这是我的 pom.xml:

0 投票
0 回答
268 浏览

java-ee-7 - 带有 Apache CFX 3.1.8 客户端实现的 JX-RS 2.0 客户端 API 线程安全问题

我正在使用 JX-RS 2.0 客户端 API 编写 REST 客户端,并将 Apache CXF 3.1.8 客户端作为类路径中的实现。

我的 gradle 依赖

我计划只使用根 url 客户端客户端实例一次,并根据应用程序的需要使用它在运行时多次创建 WebTarget。我想重用客户端对象,因为https://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Client.html这表示创建和销毁客户端对象的操作成本很高。

使用客户端对象创建 WebTarget

我知道在封面下org.apache.cxf.jaxrs.client.WebClient(CXF 的客户端实现)被使用了。http://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-ThreadSafety链接说 CXF WebClient 和 ProxyClient 默认不是线程安全的。根据此链接,我们可以在创建 CXF WebClient 或 ProxyClient 时将其设置为 true 的 threadSafe 布尔标志。

在我的代码中,我想使用标准的 JX-RS 2.0 客户端 API/接口,而不是 CXF 特定的类,如 WebClient 或 ProxyClient。

问题 -

  1. 如果我使用上面的代码实例化标准客户端对象,它是线程安全的吗?是否可以创建一次并多次将其用于不同资源的WebTarget?
  2. 列表项如果不是线程安全的,如何在我想重用客户端对象的地方实现线程安全?