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

JAVA:在泽西岛上进行分块传输

储志业
2023-03-14

我有一个正在运行的Web服务,它将被客户端移动应用程序使用。其中一项服务是返回一个JSON对象数组(超过1000个对象),每个对象都有相当大的大小。服务器端的整个计算需要一些时间,这不是一个好的用户体验。所以我希望以块的形式发送数据,例如每个块10个对象,这样这些数据就会占据屏幕,当他滚动时,或者当数据准备好时,屏幕上充满了从最新收到的块中新获取的数据。

我使用Jersey框架并发送一个Java<code>响应

@Path("/doSomething")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response doSomething() {

    List<Object> myObj = getMyObj();
    /* getMyObj returns a list of Objects, each object of considerable size
    * the whole computation of getMyObj takes some time
    */
    return Response.ok(myObj).build();
}

共有1个答案

田骁
2023-03-14

您的场景听起来像服务器推送。

你可以尝试在你的球衣服务中使用Atmosphere framework来实现你的目标。

 类似资料:
  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?

  • 问题内容: 我正在尝试编写一个使用Jersey客户端API访问RESTful Web服务的库。该服务需要设置cookie的登录请求,然后后续请求必须将该cookie设置为成功。登录请求按预期方式工作,我能够从登录响应中检索cookie,但似乎无法在后续请求中重新添加cookie。谁能说出我可能做错了什么。这是发出请求的代码: 当请求没有失败时,服务将以应用程序错误“ No Session”进行响应

  • 问题内容: 我有一个Jersey REST API,并且正在使用来处理授权。我还在所有端点上使用,以便我的API可以处理数千个并发请求。 我的授权过滤器命中了一个远程服务,但是当运行过滤器时,Jersey尚未将当前线程添加到它的内部,因此我完全失去了异步的好处。 我可以告诉Jersey我希望这是异步的吗? 这是一个示例资源: 更新 刚刚收到泽西队球员的回音,从2.7开始,这是不可能的。只有资源方法

  • 我很难理解泽西岛的注入机制。JAX-RS规范(http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-520005)指出,在应用程序子类、根资源类和提供程序中可以通过@Context进行注入。 我现在有一个在启动时实例化的类,并且有一个在每次请求时调用的方法。在方法内部,我需要访问当前的UriInfo对象。问题是,这个方法不是从我的

  • 我正在泽西岛2中编写一个RESTful网络服务。我想支持响应的 Gzip 编码。按照这个答案,我在我的类中启用了。 在我的资源类中,我返回一个对象。 现在,当我点击这个api时,我得到一个响应,但响应头不包含头,而是包含 header。 请求: 响应: 响应中没有 标头,也没有任何标头。 我在上使用。 我还遗漏了其他配置吗?我如何获得这两个头并得到gzip压缩的响应,而不是接收分块的响应? 编辑:

  • 我正在使用Jersey用Java编写一个RESTful应用程序,我需要对用户进行身份验证。我知道我可以使用注释@RolesAllowed来指定资源中的角色,但是我不明白用户是如何与特定角色相关联的。客户端以这种方式发送用户名和密码 假设某些方法只能由超级用户使用,而其他方法只能由任何用户使用,那么当用户名和密码由客户端发送时,我如何区分它们?