gpt4 book ai didi

http - Mule:迁移到新的 HTTP 连接器

转载 作者:可可西里 更新时间:2023-11-01 17:08:33 24 4
gpt4 key购买 nike

我已经从 Mule 3.5.x 升级到 3.6.x,因为旧的 http 传输在 3.6.x 中被弃用,我想迁移到新的 HTTP 连接器。

这是调用我的网络服务的原始代码:

<http:outbound-endpoint ref="OrderEndpoint" doc:name="GetApprovedOrder">
<cxf:jaxws-client serviceClass="com.acme.orders.IOrderServiceBean"
port="OrderServiceBean_v2_0Port"
operation="getApprovedOrderOp" />
</http:outbound-endpoint>

我对新连接器的看法如下:

<cxf:jaxws-client serviceClass="com.acme.orders.v2_0.IOrderServiceBean" port="OrderServiceBean_v2_0Port" operation="getApprovedOrderOp" />
<http:request config-ref="http.request.config" path="acme-services/OrderServiceBean_v2_0" method="POST" />

我遇到的问题是,使用旧版本的代码,在调用 Web 服务后,有效负载将是响应 [java] 对象。使用新版本的代码,有效负载是包含 soap xml 的 org.glassfish.grizzly.utils.BufferInputStream。

我可以结合使用 xpath 和 jaxb-xml-object-transformer 将流的内容转换为响应对象,但这看起来像是倒退。

我研究过在没有请求的情况下使用 jaxws-client 以及 ws-consumer,但我的以下要求似乎排除了这些选项(除非我只是误解了如何使用它们)。

  • 我需要使用契约优先方法来调用网络服务,请参阅上面我指定的 serviceClass 而不是 wsdl 的地方。
  • Web 服务使用基本身份验证,因此我需要指定用户名和密码。
  • 我需要能够指定网络服务的主机和端口(或至少是地址)。

最佳答案

解决方案是:将您的元素包装到处理器链中

如下:

<processor-chain>
<cxf:jaxws-client serviceClass="com.acme.orders.v2_0.IOrderServiceBean" port="OrderServiceBean_v2_0Port" operation="getApprovedOrderOp" />
<http:request config-ref="http.request.config" path="acme-services/OrderServiceBean_v2_0" method="POST" />
</processor-chain>

这是因为 cxf 正在拦截,所以在处理器链之后,您将拥有与之前解决方案中相同的对象。

关于http - Mule:迁移到新的 HTTP 连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com