我真的被困在如何将我的业务应用程序集成到 Fuse ESB 上。特别是 - Web 服务功能。我有一些问题 -
1) 我可以将 Fuse ESB 中的 blueprint.xml 作为 Web 服务“包装”并从业务应用程序中调用它吗?
2) 如何使用 Fuse ESB 将现有功能公开为 Web 服务并调用它们?
感谢任何有 Fuse 知识的人可以帮助我!
我真的被困在如何将我的业务应用程序集成到 Fuse ESB 上。特别是 - Web 服务功能。我有一些问题 -
1) 我可以将 Fuse ESB 中的 blueprint.xml 作为 Web 服务“包装”并从业务应用程序中调用它吗?
2) 如何使用 Fuse ESB 将现有功能公开为 Web 服务并调用它们?
感谢任何有 Fuse 知识的人可以帮助我!
好吧,这是一种方法。这可能不是最好的方法(欢迎评论...),但无论如何都是这样。
您显然拥有 Web 服务的 wsdl,以及执行业务逻辑的代码。
cxf-codegen-plugin
使用(for generated-sources
) 和maven-bundle-plugin
(for bundle config 和 OSGI 连接)为您的 Web 服务创建一个 maven 模块
在您blueprint.xml
定义中,您生成的端点接口类<camel-cxf:cxfEndpoint id="abc" ...
在哪里。serviceClass
<camel:camelContext id="abc" ...>
用 a定义 a来<camel:routeBuilder ref="xyz"/>
引用您定义的扩展 bean RouteBuilder
。
现在我们在扩展类中工作RouteBuilder
。然后,该configure()
方法应设置与 Web 服务中的每个操作相对应的骆驼路由。使用 java fluent 构建器语法。
下面是一个流畅的构建器语法示例:
from("direct:myOperation")
.routeId("myOperation")
.onException(SomeException.class).doSomething().doSomethingElse();
.validate(/* an expression */)
.beanRef("myBusinessLogicBean", "someMethod")
.convertBodyTo(MyResult.class)
基本上,我们把路由层改写成骆驼路由,业务逻辑调用via beanRef
-bean,它的依赖(比如datasources/dao's or persistence.xml)在blueprint.xml中配置.
您可以在流利的构建器语法中做一些非常好的事情 - 只需 googlecamel cxf
并浏览许多示例。您还可以访问所有 EIP(企业集成模式)。
您要做的最后一件事是定义feature.xml
使用<bundle>
并定义正确<feature>
依赖关系的 a (例如camel-cxf
、camel-jpa
等)。
我希望这有助于您入门。