【问题标题】:How to proxy a web service using camel?如何使用骆驼代理网络服务?
【发布时间】:2012-03-10 06:06:44
【问题描述】:

我有一个使用 spring、cxf 和 jax ws 实现的 Web 服务。我的服务公开了 10 个操作,一些操作返回了 200 多个字段。现在我想用骆驼代理我的网络服务。意味着我想为不同的客户端提供不同的 WSDL,只有必需的操作和必需的字段。我们的一个客户想要一个包含 10 个操作的特定操作,而该 Web 服务的该操作只公开了 200 个字段中的一些字段。如何通过骆驼实现这一目标?

【问题讨论】:

    标签: web-services cxf apache-camel


    【解决方案1】:

    【讨论】:

    • 感谢您的回复。我尝试了 apache camel 提供的骆驼代理示例并能够运行它。我将骆驼安装为一个定义了骆驼上下文的捆绑包。但是当我尝试使用进程并尝试从交换对象获得响应时,我没有成功。在 Camel 上下文中,我将 from 定义为在同一上下文文件中创建的 cxf:endpoint,并将“to”定义为预先存在的服务。在“to”之后,我有另一个“to”,它指的是实现 Process 接口的进程 bean。我无法得到响应,当我尝试调试并查看交换对象时,我看不到任何响应痕迹。
    【解决方案2】:

    根据您部署 Camel 实例的方式,CXF 可能有利有弊。

    如果您将 Camel 捆绑在启用 Spring 的 Web 应用程序中,那么您可能还想查看 Camel 中的 Spring-WS。它比 CXF 重量轻一点,但有点受限。尽管可以满足您的需求,但它可以。 http://camel.apache.org/spring-web-services.html

    Spring-WS 并不真正绑定到特定的 WSDL,而是绑定到特定的操作。 像这样:

    from("spring-ws:rootqname:{http://example.com/}GetFoo?endpointMapping=#endpointMapping").bean(prepareProxy) .to("spring-ws:http://foo.com/bar").bean(prepareAnswer);

    根据您需要的答案转换的复杂程度,您可以使用 Java 或 XSLT 或其他选择的脚本语言来完成。这是一个品味问题。

    【讨论】:

    • 感谢您的回复。我尝试了 apache camel 提供的骆驼代理示例并能够运行它。我正在将骆驼安装为一个定义了骆驼上下文的捆绑包。但是当我尝试使用进程并尝试从交换对象获取响应时,我没有成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2014-10-27
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多