【问题标题】:Fuse ESB and web services - how to expose routes as web services or wrap existing services as web services融合 ESB 和 Web 服务 - 如何将路由公开为 Web 服务或将现有服务包装为 Web 服务
【发布时间】:2013-04-25 09:40:21
【问题描述】:

我真的很纠结如何将我的业务应用程序集成到 Fuse ESB。特别是 - Web 服务功能。我有几个问题-

1) 我可以在 Fuse ESB 中将 blueprint.xml 作为 Web 服务“包装”并从业务应用程序中调用它吗?

2) 如何使用 Fuse ESB 将现有功能公开为 Web 服务并调用它们?

感谢任何有 Fuse 知识的人可以帮助我!

【问题讨论】:

    标签: web-services soap apache-camel fuseesb


    【解决方案1】:

    嗯,这是一种方法。这可能不是最好的方法(欢迎 cmets...),但无论如何都是这样。

    您显然拥有 Web 服务的 wsdl,以及执行业务逻辑的代码。

    1. 使用cxf-codegen-plugin(用于generated-sources)和maven-bundle-plugin(用于捆绑配置和OSGI 连接)为您的Web 服务创建一个maven 模块

    2. 在您的blueprint.xml 中定义您的<camel-cxf:cxfEndpoint id="abc" ...,其中serviceClass 是您生成的端点接口类。

    3. 定义一个 <camel:camelContext id="abc" ...> 和一个 <camel:routeBuilder ref="xyz"/> 引用您定义的扩展 RouteBuilder 的 bean。

    4. 现在我们在扩展RouteBuilder 的类中工作。然后,configure() 方法应设置与 Web 服务中的每个操作相对应的骆驼路由。使用 java fluent builder 语法

    这是一个流畅的构建器语法示例:

        from("direct:myOperation")
                .routeId("myOperation")
                .onException(SomeException.class).doSomething().doSomethingElse();
                .validate(/* an expression */)
                .beanRef("myBusinessLogicBean", "someMethod")
                .convertBodyTo(MyResult.class)
    

    基本上,我们把路由层改写成骆驼路由,通过beanRef调用业务逻辑——bean所在,以及它的依赖关系(比如datasources/dao的或者persistence.xml)在 blueprint.xml 中配置。

    您可以在流畅的构建器语法中做一些非常好的事情 - 只需 google camel cxf 并浏览许多示例。您还可以访问所有 EIP(企业集成模式)。

    您要做的最后一件事是定义一个feature.xml,它使用<bundle> 并定义正确的<feature> 依赖项(例如camel-cxfcamel-jpa 等)。

    我希望这有助于您入门。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多