Jersey POST请求并关闭InputStream

时间:2014-07-10 10:06:42

标签: jersey jax-rs inputstream

当我在Jersey中有一个侦听POST请求的方法时,当我有一个InputStream作为我想要获取数据的方法中的参数时,我是否需要关闭此InputStream或者Jersey会处理这个?

我没有找到任何相关信息。我曾经用JAX-RS 2.0读过RESTful Java,我不记得是否提到过。现在浏览一下,我找到了几个代码示例,并且没有关闭流。我认为这没有必要,但想问一下。

2 个答案:

答案 0 :(得分:0)

如何获得InputStream引用?通过MessageBodyReader?在这种情况下,如果您使用MessageBodyReader,则不得关闭InputStream。在文档中甚至有一个明确的警告。

7.2.2.2. MessageBodyReader.readFrom

无论如何,此链接适用于Jersey v2。我不知道版本1是什么。你使用哪个版本?

答案 1 :(得分:0)

我有同样的问题,但当前的答案没有回答不使用 MessageBodyReader 的情况下的问题。对于那些确实想知道 SO (one, two)

上还有另外两个答案的人

简短的回答和总结是在 InputStream 上调用 close()

背景:

  • 一位用户对其进行了调试,但该流不会自动关闭
  • close() 方法是幂等的,因此第二次调用不会造成伤害
  • 大多数用户都说要 close() 或将 closeable 与 try-with-resources-statements 结合使用