2011-09-19 73 views
2

我想研究REST服務如何使用Jersey工作。JAXB編組和解組

創建和訪問REST服務時,我想出了2個選項。 我有6個參數都是字符串

  1. 將數據作爲逗號分隔的長字符串傳遞,並在服務器端分割它。使用JAXB並執行編組和解組。

我可以理解,第一個選項將是最快的,但是沒有人知道它比第二個選項快多少,它是一個安全和有效的方法來做到這一點。

  • 這將是很好,如果有人可以提任何可能的是更多的選擇..

感謝

回答

2

如果您想使用逗號分隔的字符串,則必須編寫自己的MessageBodyReader/Writter。此外,您需要確保參數本身不包含逗號等。不是說它會阻止 - 只是注意到這一點。

您還可以使用使用Jettison的低級別JSON封送/解組 - 也應該非常快。或者使用傑克遜。請參閱Jersey user-guide中的各種JSON映射選項。

只是爲了完整性,另一種選擇可能是使用Form(實際上是一個String-> List的映射) - 如果使用它,則不需要特殊的MessageBodyReader/Writter - Jersey將爲您處理它。你只需要用@ Produce/@ Consume(「application/www-form-urlencoded」)註釋你的方法。

+0

關於逗號分隔字符串的好處 - 當然不會有任何額外的逗號。 哇,這是非常翔實的,我會採取你的意見,並看看JSON pssibilites。 謝謝 – ajax

+0

嗨,我不確定你是否嘗試過,但你有與AsyncHttpClient工作,使用REST球衣進行異步調用。我確實實現了它,但我對它的有效性以及它是否是一個好的選擇一無所知? @Form for sync的調用效果很好,但它可以用在asynchttpclient中。 ? – ajax

+0

它應該工作。順便說一下,我們確實在com.sun.jersey.contribs下進行了AsyncHttpClient集成 - 已從Jersey 1.9的實驗中移除。如果你打算使用它,我們將不勝感激。帕維爾,誰寫的也是在stackoverflow.com上,但最好的方式來到我們是在澤西島郵件列表 - [email protected]。 –

1

注:我是EclipseLink JAXB (MOXy)鉛的一員JAXB 2(JSR-222)專家組。

在Jersey中使用JAXB實現將爲您提供傳遞XML或JSON消息的選項,這些消息對於許多客戶端來說很容易與之交互。爲了未知的性能增益而創建自己的格式很可能是不必要的微型優化。

這裏是我放在一起使用澤西&一個例子莫西GlassFish中:

+0

是的,我完全同意。但我預計每秒會有3k-4k個呼叫,這就是爲什麼JAXB能夠處理它。 – ajax

+0

是的,它可以。要獲得關於針對您的需求優化Jersey的幫助,您可能需要使用以下郵件列表:[email protected]。 –