日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

REST端点,可使用Apache Camel进行集成

發(fā)布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 REST端点,可使用Apache Camel进行集成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
REST是一種用于組織資源的體系結(jié)構(gòu)樣式,當(dāng)應(yīng)用于基于HTTP的服務(wù)時,REST可以構(gòu)建無狀態(tài)的,解耦的,可伸縮的服務(wù)。 HTTP方法,HTTP標(biāo)頭和mime類型都允許開發(fā)人員實(shí)現(xiàn)REST樣式。 諸如Jersey和Fuse Services Framework(Apache CXF)之類的框架可用于加快服務(wù)的開發(fā)和部署,以嘗試實(shí)現(xiàn)RESTful風(fēng)格,在本博文中,我想討論如何構(gòu)建資源的后端,依賴于Fuse中介路由器(也稱為Apache Camel)提供的集成。

順便說一句,對于那些想知道您的體系結(jié)構(gòu)確實(shí)是RESTful還是REST試圖緩解的高度耦合的RPC風(fēng)格的人,也許我很感興趣。 關(guān)于REST撰寫論文的Roy Fielding積極主張資源表示中的超鏈接對于REST風(fēng)格必不可少的觀點(diǎn),甚至進(jìn)一步闡明了實(shí)現(xiàn)REST的不確定性。

該示例的源代碼可以在我的github存儲庫中找到

Fuse中介路由器是FuseSource的企業(yè)級硬化版Apache Camel,提供了舒適的DSL,用于描述集成,中介和路由。 它是免費(fèi)的開放源代碼,并具有Apache許可證。 對于那些不熟悉Mediation Router / Camel的人,請看DZone企業(yè)集成區(qū)Apache Camel:Integration Nirvana的 Jon Anstey( Camel in Action的合著者)的介紹。

我們將使用中介路由器來幫助在REST端點(diǎn)和文件系統(tǒng)上的資源文件之間編寫簡單的集成。 我將使用camel-cxfrs組件公開REST端點(diǎn),并將使用camel-file組件讀取文件系統(tǒng)上的目錄。 該樣本的目的是描述必要的配置,以通過中介路由器公開REST接口,以某種方式與后端集成,將數(shù)據(jù)轉(zhuǎn)換為適當(dāng)?shù)腞EST響應(yīng)并發(fā)送回該響應(yīng)。

首先,讓我們專注于如何設(shè)置REST端點(diǎn)。 為此,您將創(chuàng)建一個JAX-RS資源,該資源描述將用作REST端點(diǎn)的java方法。 此樣本代碼要求熟悉RESTful Web服務(wù) (又稱JAX-RS)的Java API 。 對于那些不熟悉的人,這里有一些不錯的教程,可以幫助您理解JAX-RS。

@Path("/customerservice/") public class CustomerServiceResource {// NOTE: The instance member variables will not be available to the // Camel Exchange. They must be used as method parameters for them to // be made available @Context private UriInfo uriInfo;public CustomerServiceResource() { }@GET @Path("/customers/{id}/") @Produces("text/xml") public Customer getCustomer(@PathParam("id") String id) {return null; }@PUT @Path("/customers/") public Response updateCustomer(Customer customer) {return null; }}

如您所見,注釋是JAX-RS注釋,用于描述REST端點(diǎn)所涉及的操作,HTTP方法和mime類型。 注意,返回值全為空,因?yàn)榇祟悓?shí)際上將不會用于處理進(jìn)入端點(diǎn)的請求。 中介路由器路由將負(fù)責(zé)處理和響應(yīng)。 但是請注意,實(shí)例成員不可用于中介路由器交換,即,通過JAX-RS @Context注釋注入的任何實(shí)例成員將不可用。 要使它們可用,請將它們作為參數(shù)添加到您的方法中。

可以使用以下兩種方法之一來聲明使用中介路由器的CXF-RS端點(diǎn):直接在端點(diǎn)配置中,如下所示:

from("cxfrs://http://localhost:9090/route?resourceClasses=com.fusesource.samples.CustomerServiceResource")

直接在配置中創(chuàng)建它需要較少的xml配置,但靈活性有限。 另一個選擇是創(chuàng)建一個負(fù)責(zé)端點(diǎn)的單獨(dú)的bean,然后在端點(diǎn)配置中引用它:

from("cxfrs:bean:rsServer")

Bean rsServer應(yīng)該在駱駝上下文中定義。 例如:

<cxf:rsServer id="rsServer" address="http://localhost:9090/route"serviceClass="com.fusesource.samples.CustomerServiceResource"/>

這種方法允許您解耦端點(diǎn)配置,并允許端點(diǎn)配置更快,更省力。 盡管使用了第一個選項(xiàng),但兩個選項(xiàng)都顯示在示例代碼中。

這就是使用中介路由器公開REST端點(diǎn)所需的全部配置。 很簡單。 下一步是根據(jù)來自REST端點(diǎn)的內(nèi)容來使用文件系統(tǒng)中的文件。 該文件的內(nèi)容將返回給REST調(diào)用的客戶端。 為此,我們使用駱駝文件組件,并通過DSL中的pollEnrich調(diào)用豐富Exchange:

.setHeader(Exchange.FILE_NAME, simple("test-${body}.xml")) .pollEnrich("file:src/data?noop=true", 1000, new CustomerEnricher())

我們不能在pollEnrich調(diào)用中使用任何動態(tài)表達(dá)式,因此我們在設(shè)置擴(kuò)展之前設(shè)置文件組件可以理解的標(biāo)頭。 在這種情況下,REST消息的主體是可用于對文件系統(tǒng)資源進(jìn)行模板化的標(biāo)識符。

最后,我們可以對路線進(jìn)行一些附加處理:

.process(new CustomerServiceProcessor())

如上所述,該示例的目的是顯示如何配置終結(jié)點(diǎn)并將其附加到進(jìn)一步的中介路由器處理中。 請注意,REST端點(diǎn)的消息交換模式(MEP)為InOut并期望響應(yīng)。 該示例并不意味著是完整的端到端解決方案,因?yàn)樵摻鉀Q方案將根據(jù)預(yù)期的功能而有所不同。 請注意上面有關(guān)Roy關(guān)于什么是REST和不是REST 的討論的鏈接。

如果我遺漏了一些內(nèi)容,或者您??需要對示例進(jìn)行更多說明,請給我評論,我們可以進(jìn)行討論。

參考:來自Christian Posta Software博客的JCG合作伙伴 Christian Posta 使用Apache Camel進(jìn)行集成的REST端點(diǎn) 。


翻譯自: https://www.javacodegeeks.com/2012/05/rest-endpoint-for-integration-using.html

總結(jié)

以上是生活随笔為你收集整理的REST端点,可使用Apache Camel进行集成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。