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

Jersey中的StreamingOutput是否已缓冲?

曾景龙
2023-03-14

我有两个问题关于StreamingOutput在泽西:

1) 它已经被jax-rs运行时缓冲了吗?我见过一些例子,在重写write()方法时,从OutputStream对象创建BufferedWriter。但我想知道这是否真的有必要。

2) Jersey或jax rs运行时是否在流完成后关闭OutputStream对象?

谢谢

格格

共有1个答案

方和豫
2023-03-14

为了达到最高效率,考虑在缓冲区写入器中封装输出流写入器,以避免频繁的转换器调用。例如:http://docs.oracle.com/javase/6/docs/api/java/io/OutputStreamWriter.html

import javax.ws.rs.core.StreamingOutput;
StreamingOutput stream = new StreamingOutput() {
                @Override
                public void write(OutputStream os) throws IOException,
                        WebApplicationException {
                        Writer writer = new BufferedWriter(new OutputStreamWriter(os));
                        writer.write(msg);
                        writer.flush();
                }
            };
 类似资料:
  • 问题是,尽管在调用FeedReturnStreamingOutput之前从资源发回响应,但Jersey客户端会等待FeedReturnStreamingOutput执行完成。 客户端代码:

  • void is_cached(string template, [string cache_id]) This returns true if there is a valid cache for this template. This only works if caching is set to true. 在指定模板的缓存存在是返回真。只有在缓存设置为真时才可用。 Example 13-18

  • 问题是,如果我执行上述^,以访问endpoint上的请求信息,则如果筛选器验证失败,我就不能再中止筛选器中的请求,因为我会得到以下错误: 似乎如果您在Jerseyendpoint上定义任何类型的参数,这些参数可以在ContainerRequestContext中访问,那么它将不允许您中止过滤器中的过滤器链。 一个解决方法(我还没有尝试过,但假设会成功)是这样做:如果过滤器验证失败,我可以只向请求添

  • 问题内容: 它可能是实现细节,但是对于Oracle和IBM JDK而言,至少是对已编译模式进行了缓存,还是作为应用程序开发人员我们需要自己对已编译模式进行缓存? 问题答案: 我不认为结果会被缓存,并且代码或文档中也没有这种行为的证据。自己实现这样的缓存(当然)是比较琐碎的,但是我对这样的缓存很有用的用例感兴趣。 回覆。下面的注释和String.split(),有一种不同的方法,即代码采用简单的1或

  • 情景: 我有一个大的GIF图像,我想在用户第一次使用滑动图像加载和缓存库打开应用程序时缓存它。此后,每当用户打开应用程序,我想显示缓存版本,如果存在。此GIF URL将在给定时间间隔后过期。当它过期时,我获取新的GIF URL并显示/缓存它以备将来使用。 我尝试了什么: 我在Glide的github页面上进行了缓存和缓存失效。我还浏览了Google Group线程确保加载的图像仅来自磁盘缓存,该线

  • 我试图确定m元树中的所有节点是否都已满。我想我已经大致了解了,但我不确定。以下是我到目前为止所做的。 在我的TreeNode类中,我有以下方法。 其中,Num儿童是数组节点[](或仅nodes.length)中可能的子节点总数,节点[]是当前节点的所有子节点的数组。此外,知道我的TreeNodes是双链接的可能会有所帮助,这样如果需要,我就可以检索当前节点的父节点。 然后,在我的树类中,我有以下递