当前位置: 首页 > 知识库问答 >
问题:

泽西邮政请求和关闭输入流

崔涵亮
2023-03-14

当我在Jersey中有一个监听POST请求的方法,并且当我想从中获取数据的方法中有一个InputStream作为参数时,我需要关闭这个InputStream还是Jersey会处理这个问题?

我没有找到任何相关信息。不久前,我读过使用JAX-RS 2.0的RESTful Java,我不记得是否有人提到过它。现在浏览一下,我发现了几个代码示例,并且流没有关闭。我觉得没必要,但我想问问。

共有2个答案

文寒
2023-03-14

我也有同样的问题,但当前的答案在不使用MessageBodyReader时并不能回答这个问题。对于那些想知道这里还有两个答案的人来说(一,二)

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

背景:

  • 一个用户调试了它,流没有自动关闭
  • 方法是幂等的,所以第二次调用不会造成伤害
  • 大多数用户都说要关闭()它或者在try-with-resource-语句中使用Closeable
华宪
2023-03-14

你是如何得到那个输入流引用的?通过一个MessageBodyReader?在这种情况下,如果你正在使用一个MessageBodyReader,你就不能关闭输入流。在留档中甚至有一个明确的警告。

7.2.2.2. MessageBodyReader。阅读

无论如何,这个链接适用于Jersey v2。我不知道版本1是怎么回事。你用哪个版本?

 类似资料:
  • 我不知道为什么我不能为注册用户发布数据,我需要一些其他的东西,比如解析或者....请帮助我,谢谢

  • 我使用Jersey客户端从Java代码进行REST调用: 在我的GET请求中, 调用后,客户端将自动关闭。 如果我用, 我得到了同样的结果。 在这种情况下,连接是自动关闭还是需要手动关闭?

  • 我使用的是Jersey客户端v2。16(Dropwizard 0.8.0的可传递依赖项,我也在使用它)。 当实体被读取为时,我不知何故对响应的关闭机制感到困惑。文件规定: 此外,如果实体被读入InputStream(通过response.readEntity(InputStream.class))中,则连接将保持打开状态,直到您完成对InputStream的读取。在这种情况下,应该在从InputS

  • 在Jersey 2中,我可以将一个定制的、请求特定的值注入到我的资源中吗?具体来说,我想注入一个< code>MyThing,它可以从我的自定义安全上下文< code>MySecurityContext中派生出来。我想直接注入< code>MyThing来使代码变得干净。 有什么办法可以做到这一点吗?根据这个问题,它不能使用尽管本文和此示例表明它可能是可能的。 使用身份验证筛选器,我可以使用以下代

  • 我正在编写一个连接到我自己的泽西Rest客户端的Android应用程序。HTTP get命令工作正常,但我在POST上遇到问题,我试图向服务器发送一些东西。我收到一个405退回,所以服务器似乎无法将请求与资源方法匹配起来。有什么想法吗?下面的测试代码… Rest服务器 ANDROID客户端 TCPMon流量显示以下POST /Maintenance_Server/rest/responsesHTT

  • 我有灰熊提供的球衣。 我有一个实现类。但是,为所有传入请求创建一次此类。因此,这样做: 为空。我可以将上下文注入到被调用的实际endpoint中,但这相当粗糙和丑陋,对我来说真的没有用;因为我希望记录各种请求。理想情况下,希望在请求的ResponseFilter端找到这个对象。 必须有一种简单的方法来做到这一点。到目前为止,我看到的所有问题/答案都不适用于灰熊,或者注入了RESTendpoint调