2011-09-19 62 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]。 –