我真的被困在如何将业务应用程序集成到Fuse ESB中。特别是 - 网络服务功能。我有几个问题 -Fuse ESB和Web服务 - 如何将路由作为Web服务公开或将现有服务作为Web服务
1)我可以在Fuse ESB中将blueprint.xml作为Web服务'换行'并从业务应用程序调用它吗?
2)如何使用Fuse ESB将现有功能作为Web服务公开并调用它们?
感谢有可能帮助我的保险丝知识的人!
我真的被困在如何将业务应用程序集成到Fuse ESB中。特别是 - 网络服务功能。我有几个问题 -Fuse ESB和Web服务 - 如何将路由作为Web服务公开或将现有服务作为Web服务
1)我可以在Fuse ESB中将blueprint.xml作为Web服务'换行'并从业务应用程序调用它吗?
2)如何使用Fuse ESB将现有功能作为Web服务公开并调用它们?
感谢有可能帮助我的保险丝知识的人!
那么,这里有一个方法来做到这一点。这可能不是最好的方法(评论欢迎...),但在任何情况下都是如此。
显然,您的Web服务的wsdl以及执行业务逻辑的代码。
创建一个行家模块用于使用cxf-codegen-plugin
(对于generated-sources
)和maven-bundle-plugin
(对于束配置和OSGI布线)
在你blueprint.xml
定义web服务的<camel-cxf:cxfEndpoint id="abc" ...
其中serviceClass
是您的生成端点接口类。
定义一个<camel:camelContext id="abc" ...>
,其中<camel:routeBuilder ref="xyz"/>
指的是您定义的一个bean,其扩展为RouteBuilder
。
现在我们在延伸RouteBuilder
的课堂上工作。然后,configure()
方法应该设置与Web服务中每个操作对应的骆驼路由。使用java 流利构建器语法。
下面是一口流利的建设者语法的例子:
from("direct:myOperation")
.routeId("myOperation")
.onException(SomeException.class).doSomething().doSomethingElse();
.validate(/* an expression */)
.beanRef("myBusinessLogicBean", "someMethod")
.convertBodyTo(MyResult.class)
基本上,我们采取了路由层,并重新写它作为一个骆驼的路线,而业务逻辑被称为通过beanRef
- 在blueprint.xml中配置bean和它的依赖关系(如datasources/dao's或persistence.xml)。
您可以在流利的构建器语法中做一些非常好的事情 - 只需google camel cxf
并浏览大量示例。您还可以访问所有EIP(企业集成模式)。
你必须做的最后一件事是定义一个feature.xml
它使用<bundle>
,并定义正确的<feature>
依赖关系(例如camel-cxf
,camel-jpa
等)。
我希望这可以帮助你开始。
好的答案......应该被接受。 – Namphibian 2014-05-20 03:25:01