将文档流发送到 Jersey @POST 端点

2023-11-22

我希望能够sendWeb 服务的一堆文档流。这将节省 Http 请求/响应开销并专注于文档本身。

在Python中你可以做这样的事情:

r = requests.post('https://stream.twitter.com/1/statuses/filter.json',
    data={'track': 'requests'}, auth=('username', 'password'),
    stream=True)

for line in r.iter_lines():
    if line: # filter out keep-alive new lines
        print json.loads(line)

我正在寻找一个将请求传输到 Jersey Rest api 的示例。我希望看到客户端和服务器端来展示它的工作原理。但我正在努力寻找一个例子。

理想情况下,该示例将显示:

Client:
  Open request
  Iterate over huge document list
    Write document to open request stream
  Close request

Server:
  @POST method
    Open entity stream
    Iterate over entity stream while next document is available
        Process document
    Close entity stream              

如果我们做对了,您将在服务器上处理实体,同时仍在客户端上发送它们!巨大的胜利!


实现此目的的最简单方法之一是让 Jersey 为 POST 处理程序提供InputStream对于 HTTP POST 正文。该方法可以使用InputStream和您选择的 JSON 解析器来解析然后处理每个对象。

在以下示例中,杰克逊ObjectReader产生一个MappingIterator它解析并处理每个Person文档在传递到服务器时位于数组中

/**
 * Parse and process an arbitrarily large JSON array of Person documents
 */
@Path("persons")
public static class PersonResource {

    private static final ObjectReader reader = new ObjectMapper().readerFor(Person.class);

    @Path("inputstream")
    @Consumes("application/json")
    @POST
    public void inputstream(final InputStream is) throws IOException {
        final MappingIterator<Person> persons = reader.readValues(is);
        while (persons.hasNext()) {
            final Person person = persons.next();
            // process
            System.out.println(person);
        }
    }
}

同样,Jersey 客户端框架在配置了 Jackson 后可以发送文档流ObjectMapper。以下示例使用 Jersey Test 框架演示了这一点。客户端传输任意大的迭代器Person文件

public class JacksonStreamingTest extends JerseyTest {

    @Override
    protected Application configure() {
        return new ResourceConfig(PersonResource.class, ObjectMapperProvider.class);
    }

    /**
     * Registers the application {@link ObjectMapper} as the JAX-RS provider for application/json
     */
    @Provider
    @Produces(MediaType.APPLICATION_JSON)
    public static class ObjectMapperProvider implements ContextResolver<ObjectMapper> {

        private static final ObjectMapper mapper = new ObjectMapper();

        public ObjectMapper getContext(final Class<?> objectType) {
            return mapper;
        }
    }

    @Override
    protected void configureClient(final ClientConfig config) {
        config.register(ObjectMapperProvider.class);
    }

    @Test
    public void test() {
        final Set<Person> persons = Collections.singleton(Person.of("Tracy", "Jordan"));
        final Response response = target("persons/inputstream").request().post(Entity.json(persons.iterator()));
        assertThat(response.getStatus()).isEqualTo(204);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文档流发送到 Jersey @POST 端点 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 该Web容器尚未启动@Glassfish 4.0.01 web

    所以 这就是我对我的服务进行 REST 调用后得到的结果 2014 04 25T01 06 52 393 0200 glassfish 4 0 WARNING javax enterprise web tid ThreadID 21 Thr
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 来自存储在表中的值的 SQL 动态 SELECT 语句

    我已经研究了几天了 感觉自己在兜圈子 我有 SQL 的基本知识 但有很多地方我不明白 我有一个表 用于存储数据库中所有其他表的名称和字段 tblFields TableName FieldName BookmarkName Customer
  • 为什么除了没有捕获这个错误?

    我有一个程序可以模拟掷骰子并将它们与图表 一组字符串列表 中的值进行比较 我目前从 TEdit 获取值 如果该框为空 则会引发 EConvertError 该错误应该由我的 Try Except 语句捕获 但事实并非如此 想法和建议 下面的
  • 如何保护项目中的数据库配置文件? [复制]

    这个问题在这里已经有答案了 我已经创建了 php 文件来与数据库服务器建立连接 在这个文件中 我正在使用mysql connect 函数的参数为 我的数据库服务器的主机 用户名和密码 public class DatabaseConnect
  • 在网页上实时显示数据[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我不确定如何用最好的方式来表达它 但我正在寻找一种在网页可用时在网页上显示数据的方法 示例 在网页上显示 IRC 频道消息 当消息发送到 IRC 频
  • 生成正则表达式

    通常在我们的工作中我们会使用正则表达式capture or match运营 但是 可以使用正则表达式 至少手动 来生成与正则表达式匹配的合法句子 当然 有些正则表达式可以匹配无限长的句子 例如表达式 我有一个问题可以通过使用正则表达式句子生
  • IntelliJ:命令行太长。在 SBT 项目中缩短命令行...

    当我尝试运行我的应用程序时 IntelliJ 刚刚开始告诉我 命令行太长 缩短 my app 或应用程序默认配置的命令行 the my app是一个蓝色链接 可通往 编辑配置 窗口 自动选择并突出显示类路径缩短器的下拉列表 我选择了建议的选
  • Android:ListViews 和 CheckBoxes 的问题

    我有一个 ListView 在每个列表项中我有一些 TextView 和一个 CheckBox 当我检查复选框并且 onCheckedChangeListener 触发时 一切都会按预期工作 然而 一旦选中一个复选框 就会随机选中其他复选框
  • .Maui 静态 Web 资源构建问题

    严重性代码 说明 项目文件行抑制状态 未找到 obj Debug net6 0 android android x86 staticwebassets build json 处的错误清单文件 MauiApp3 C Program Files
  • 如何更改 seaborn 对图中绘图元素的 z 顺序

    这是一个片段 用于重现我的示例图像 import pandas as pd import numpy as np import seaborn as sns np random seed 42 df pd DataFrame np rand
  • Environment.UserName 返回应用程序池名称而不是用户名

    下面一行 Environment UserName 在 Visual Studio 的调试模式下 返回我需要的用户身份 然后 当我在 IIS 中设置站点并运行代码时 同一行返回该站点使用的应用程序池的名称 我怎样才能让它仍然返回用户名 尝试
  • 如何在 Spring Webflux / Reactor Netty Web 应用程序中执行阻塞调用

    在我的用例中 我有一个带有 Reactor Netty 的 Spring Webflux 微服务 我有以下依赖项 org springframework boot spring boot starter webflux 2 0 1 发布 o
  • CSS 样式 <音频>

    有没有一种方法可以设置时间线拇指 搜索者 的样式
  • 将代码跟踪到 PDF 或 PostScript 文件中

    有没有办法跟踪 PDF 的打开时间 也许通过将一些脚本嵌入到 pdf 本身中 我看到下面的问题 我想对于 javascript 来说答案是 否 但我想知道这是否可能 Google Analytics 跟踪代码插入 pdf 文件 PDF 标准
  • 计算“凯文·培根”数字

    我一直在玩弄一些东西并想到了试图弄清楚的想法凯文 培根数字 我有一个网站的数据 为此我们可以考虑将其视为社交网络 让我们假设它是 Facebook 为了简化讨论 我有一些人 我有他们的朋友名单 所以我有他们之间的联系 我如何计算一个人到另一
  • 使用 JavaScript 捕获文件浏览窗口的关闭

    我正在使用 infile 要求用户浏览其计算机上的文件 如果在没有选择文件的情况下关闭窗口 有没有办法捕获 例如 如果单击 x
  • 有没有办法在 Git 中不提交或存储的情况下保存当前更改?

    我更改了很多文件 我意识到我的方法不好 所以 我想尝试另一种方法 在这种情况下我知道两种解决方案 提交 我不想使用此功能 因为我知道我当前的代码不起作用 Stash 我也不想使用这个 因为我错过了几个文件 我必须重新编写它们 我正在寻找的是
  • 让 Excel 从 VBA 中刷新工作表上的数据

    如何在 Excel 中获取电子表格数据并在 VBA 中重新计算自身 而无需仅仅更改单元格值 下面几行就可以解决这个问题 ActiveSheet EnableCalculation False ActiveSheet EnableCalcul
  • 如何按国家和关键字查找视频?

    我想按国家 地区和关键字查找 Youtube 视频 例如 在挪威上传的所有有关奥巴马的视频 我已经尝试过的事情 1 标准供稿允许特定于国家 地区的结果 但不允许关键字搜索 例子 http gdata youtube com feeds ap
  • 如何使用张量流构建多输入图?

    是否可以定义具有多个输入的 TensorFlow 图 例如 我想给图表两个图像和一个文本 每个图像都由一堆层处理 最后有一个 fc 层 然后有一个节点计算考虑这三种表示的损失函数 目的是让三个网络在考虑联合表示损失的情况下进行反向传播 是否
  • 将文档流发送到 Jersey @POST 端点

    我希望能够sendWeb 服务的一堆文档流 这将节省 Http 请求 响应开销并专注于文档本身 在Python中你可以做这样的事情 r requests post https stream twitter com 1 statuses fi