我真的陷入了如何将我的业务应用程序集成到Fuse ESB的问题。特别是 - Web服务功能。我有几个问题 -
1)我可以将Fuse ESB中的blueprint.xml作为Web服务包装并从业务应用程序中调用吗?
2)如何使用Fuse ESB将现有功能公开为Web服务并调用它们?
感谢任何拥有Fuse知识的人,他们可以帮助我!
答案 0 :(得分:2)
嗯,这是一种方法。它可能不是最好的方法(欢迎评论......)但无论如何都是这样。
您显然拥有适用于您的Web服务的wsdl以及执行业务逻辑的代码。
使用cxf-codegen-plugin
(针对generated-sources
)和maven-bundle-plugin
(针对捆绑配置和OSGI接线)为您的Web服务创建maven模块
在blueprint.xml
中定义<camel-cxf:cxfEndpoint id="abc" ...
,其中serviceClass
是您生成的端点接口类。
使用<camel:camelContext id="abc" ...>
定义<camel:routeBuilder ref="xyz"/>
,引用您定义的扩展RouteBuilder
的bean。
现在我们在扩展RouteBuilder
的类中工作。然后,configure()
方法应设置与您的Web服务中的每个操作相对应的camel路由。使用java 流利的构建器语法。
以下是流利的构建器语法示例:
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
,等)。
我希望这有助于您入门。