Fuse ESB和Web服务 - 如何将路由公开为Web服务或将现有服务包装为Web服务

时间:2013-05-01 11:32:10

标签: web-services soap apache-camel fuseesb

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

您显然拥有适用于您的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服务中的每个操作相对应的camel路由。使用java 流利的构建器语法

  5. 以下是流利的构建器语法示例:

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

    基本上,我们已经采用了路由层并将其重写为camel路由,并且通过beanRef调用业务逻辑 - 其中bean和它的依赖项(例如datasources / dao或persistence)。 xml)在blueprint.xml中配置。

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

    您要做的最后一件事是定义使用feature.xml的{​​{1}}并定义正确的<bundle>依赖项(例如<feature>camel-cxf,等)。

    我希望这有助于您入门。