将 Mule ESB 服务的请求传递给条件路由器

发布于 2024-12-23 12:18:05 字数 105 浏览 0 评论 0原文

我正在使用 Mule ESB 公开 CXF 服务,并且我需要将请求按原样传递给条件路由器。我看到的大多数示例都会将响应传递给条件路由器。

如何在不更改 wsdl 的情况下转发请求?

I am exposing a CXF service using Mule ESB and i need to pass on the request as is to the Conditional routers. Most of the examples I see pass the response to conditional routers.

How do I pass the request forward without changing the wsdl?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流年已逝 2024-12-30 12:18:05

当OP给出更高的精度时,我会修改这个答案

放置一个选择路由消息处理器位于实现 Web 服务的组件之后。

I'll revise this answer when the OP will have given more precision

Place a choice routing message processor after the component that implements your web service.

旧街凉风 2024-12-30 12:18:05

我使用了 Mule ESB 3 提供的 Web 服务代理模式

<pattern:web-service-proxy name="theProxy" 
         outboundAddress="vm://theProxyFlow" 
        wsdlFile="classpath:wsdl/MyWsWSDL.wsdl" inboundAddress="${inbound.url}" transformer-refs="RequestToString">
</pattern:web-service-proxy>

,VM 端点实际上使用 xpath 表达式执行基于条件的路由。然而,我必须编写一个“RequestToString”自定义转换器,以便我可以在传入的 SOAP 负载上应用 xpath。

我在变压器中使用了以下转换 -

      if (src instanceof InputStream)
        {
            InputStream input = (InputStream) src;
            try
            {
                reqAsString = IOUtils.toString(input);
            }
            finally
            {
                IOUtils.closeQuietly(input);
            }
        }

I used a web-service-proxy pattern provided by Mule ESB 3

<pattern:web-service-proxy name="theProxy" 
         outboundAddress="vm://theProxyFlow" 
        wsdlFile="classpath:wsdl/MyWsWSDL.wsdl" inboundAddress="${inbound.url}" transformer-refs="RequestToString">
</pattern:web-service-proxy>

And the VM endpoint actually does the Condition based routing by using xpath expression. However I had to write a "RequestToString" custom transformer so that I could apply xpath on the incoming SOAP payload.

I used the following transformation in the transformer -

      if (src instanceof InputStream)
        {
            InputStream input = (InputStream) src;
            try
            {
                reqAsString = IOUtils.toString(input);
            }
            finally
            {
                IOUtils.closeQuietly(input);
            }
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文