JAXB编组与调度;解组

JAXB编组与调度;解组,jaxb,jersey,Jaxb,Jersey,我试图研究REST服务方法如何使用Jersey工作 在创建和访问REST服务时,我提出了两个选项。 我有6个参数,都是字符串 将数据作为逗号分隔的长字符串传递,并在服务器端将其拆分 使用JAXB并进行编组和解编组 我可以理解第一个选项是最快的,但是有人知道它比第二个选项快多少吗?这是一种安全有效的方法吗 如果有人能提出更多可能的选择,那就太好了 感谢注意:我是领导者和JAXB 2()专家组的成员 通过Jersey使用JAXB实现,您可以选择传递XML或JSON消息,这对于许多客户机来说都很容

我试图研究REST服务方法如何使用Jersey工作

在创建和访问REST服务时,我提出了两个选项。 我有6个参数,都是字符串

  • 将数据作为逗号分隔的长字符串传递,并在服务器端将其拆分
  • 使用JAXB并进行编组和解编组
  • 我可以理解第一个选项是最快的,但是有人知道它比第二个选项快多少吗?这是一种安全有效的方法吗

    • 如果有人能提出更多可能的选择,那就太好了

    感谢

    注意:我是领导者和JAXB 2()专家组的成员

    通过Jersey使用JAXB实现,您可以选择传递XML或JSON消息,这对于许多客户机来说都很容易进行交互。为了未知的性能增益而发明自己的格式很可能是一种不必要的微观优化

    下面是我在GlassFish中使用Jersey和MOXy制作的一个示例:


    如果需要逗号分隔的字符串,您必须编写自己的MessageBodyReader/Writer。此外,您还需要确保参数本身不包含逗号等。这并不是说它将是一个拦截器,只是要注意这一点

    您还可以使用抛弃来使用低级JSON封送/解封送-这也应该非常快。或者用杰克逊。请参阅中的各种JSON映射选项


    为了完整起见,另一个选项可能是使用表单(本质上是字符串->列表的映射)——如果您使用表单,则不需要特殊的MessageBodyReader/Writer——Jersey将为您处理它。你只需要用@product/@Consume(“application/www-form-urlencoded”)来注释你的方法。

    是的,我完全同意。但我预计每秒有3k-4k呼叫,这就是为什么JAXB能够处理它。是的,它可以。有关根据您的要求优化Jersey的帮助,您可能希望利用以下邮件列表:users@jersey.java.net.Good关于逗号分隔字符串的一点-肯定不会有任何额外的逗号。哇,这是非常有益的,我将采纳你的建议,研究JSON pssibilites。谢谢,我不确定你是否尝试过,但是你是否与AsyncHttpClient一起使用REST进行过异步调用。我确实实现了它,但我不知道它的效率有多高,以及它是否是一个好的选择@用于同步调用的表单工作得很好,但它可以在asynchttpclient中使用吗?它应该会起作用。顺便说一句,我们确实在com.sun.jersey.contribs下集成了AsyncHttpClient,它是从jersey 1.9中的实验版本迁移过来的。如果您打算使用,我们将非常感谢您的反馈。Pavel也是在stackoverflow.com上写的,但是联系我们的最好方式是在泽西岛邮件列表上-users@jersey.java.net.