我真的被困在如何將業務應用程序集成到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