vert.x json mysql_如何在Vert.x中用Jackson传输JSON结果(java)-程序员宅基地

技术标签: vert.x json mysql  

我假设您正在生成巨大的JSON文档,因为小的字符串输出已足够好:objectMapper.writeValue(< String&gt ;, result);

流有问题. ObjectMapper不知道结果大小,您最终会遇到以下异常:

java.lang.IllegalStateException: You must set the Content-Length header to be the total size of the message body BEFORE sending any data if you are not using HTTP chunked encoding.

at org.vertx.java.core.http.impl.DefaultHttpServerResponse.write(DefaultHttpServerResponse.java:474)

因此,在您的示例中,我将使用临时文件进行JSON输出,然后将它们刷新为响应(我尚未测试代码)

File tmpFile = File.createTempFile("tmp", ".json");

mapper.writeValue(tmpFile, result);

req.response().sendFile(tmpFile.getAbsolutePath(), (result) -> tmpFile.delete());

如果最初知道内容长度,则可以使用以下代码将OutputStream与WriteStream映射

import org.vertx.java.core.buffer.Buffer;

import org.vertx.java.core.streams.WriteStream;

import java.io.IOException;

import java.io.OutputStream;

public class OutputWriterStream extends OutputStream {

public WriteStream writeStream;

public Runnable closeHandler;

@Override

public void write(int b) throws IOException {

throw new UnsupportedOperationException();

}

@Override

public void write(byte[] b, int off, int len) throws IOException {

if (off == 0 && len == b.length) {

writeStream.write(new Buffer(b));

return;

}

byte[] bytes = new byte[len];

System.arraycopy(b, off, bytes, 0, len);

writeStream.write(new Buffer(bytes));

}

@Override

public void write(byte[] b) throws IOException {

writeStream.write(new Buffer(b));

}

@Override

public void close() throws IOException {

closeHandler.run();

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_32307021/article/details/113937921

智能推荐

python 基础_pio.write_image-程序员宅基地

文章浏览阅读2.4k次,点赞6次,收藏19次。一、Python 安装一、Python 应用场景1.Web应用开发2.自动化运维3.科学计算4.桌面软件5.服务器软件6.游戏7.人工智能8.数据分析二、Python3 开发环境搭建1、Python2​ 在大多数Linux系统上都已经有集成好了 Python2 开发环境,不需要安装就可以执行Python代码了①.验证 Python2 环境是否搭建好:Ctrl + Alt + t 打开终端输入命令$ python②.退出 Python2 环境命令:exit() 或 Ctrl+_pio.write_image

STM32 CubeIDE 使用 CMSIS-DAP烧录 (方法1--修改配置文件)_cmsis-dap怎么用-程序员宅基地

文章浏览阅读2.8k次,点赞29次,收藏40次。因为它是开源的,避免使用J-Link的Clone提醒,以及不同质量的盗版ST-Link的各种问题,以及同时调试多个项目时需要多个不同型号的调试器。CubeIDE目前只支持ST-Link、J-Link, 我们需要一些操作才能让它支持CMSIS-DAP。使用CMSIS-DAP需要.cfg后缀的文件,一般使用ST-Link调试器不会生成此文件。新工程配置完成后,如下图,暂时是没有Debug资源的。保存后,Debug下方,出现了刚才保存的cfg文件。1、生成调试器的CFG文件。2、打开Debug配置。_cmsis-dap怎么用

根据冯诺依曼原理 计算机分为哪五大部件,①冯·诺依曼计算机结构分为哪五大部分?...-程序员宅基地

文章浏览阅读8.8k次。输入设备、运算器、控制器、存储器、输出设备。冯.诺依曼计算机的工作原理,“存储程序控制”原理的基本内容:1、采用二进制形式表示数据和指令。2、将程序(数据和指令序列)预先存放在主存储器中(程序存储),使计算机在工作时能够自动高速地从存储器中取出指令,并加以执行(程序控制)。3、由运算器、控制器、存储器、输入设备、输出设备五大基本部件组成计算机硬件体系结构。扩展资料根据冯诺依曼体系结构构成的计算机,..._冯诺依曼计算机体系结构五大组成

广域网(WAN)--网络大典_wan atm和sonet协议-程序员宅基地

文章浏览阅读1.1k次。 广域网(WAN)是一种覆盖较大范围的计算机网络,其涉及整个世界网络。通常 WAN 连接多重较小网络,如局域网(LAN)或区域网(MAN)。世界最流行的 WAN 是因特网。因特网内部的某些部分也属于广域网。广域网可以由私人拥有也可以向服务器供应商租用,其中包含公用网络(用户共享)。  为了保密性和安全通信,组织通常使用依靠于公共交换数据网络(PSDN)的虚拟专用网络(VPN)。在 _wan atm和sonet协议

OpenGL ES3.1使用计算着色器(Compute Shader)_opengl es计算着色器-程序员宅基地

文章浏览阅读5.6k次,点赞7次,收藏11次。OpenGL ES3.1使用计算着色器(Compute Shader)1.基本介绍OpenGL ES从3.1版本开始支持计算着色器 工作模型有全局工作组和本地工作组,全局工作组包含由三维的本地工作组组成,本地工作组也由三个维度组成。本地工作组三个维度大小分别为:local_size_x,local_..._opengl es计算着色器

如何一年内做到Python总监,秘诀竟然是这样的_怎么才能做到会写python程序-程序员宅基地

文章浏览阅读353次。Python 是一门优雅而又不失实用的语言,它语法简单很容易学会,又具有极高的可读性和灵活性。在知乎上 Python 是受关注最多的编程语言。很遗憾在我初学的时候没有知乎这样的平台提供这么多的资源,甚至全靠自己摸索。虽然各类观点俯拾皆是,但是有时候却会让人迷失了方向。本次 Live 我将带来个人对 Python 开发工程师如何入门、提高和进阶的一些见解,希望通过我个人的工作经历、学习方法,给不同阶..._怎么才能做到会写python程序

随便推点

【中级——高级迈不过去?】Android高级工程师进阶学习——Android推送技术解析(系列篇14-程序员宅基地

文章浏览阅读403次,点赞4次,收藏4次。先说短连接, 短连接是通讯双方有数据交互时就建立一个连接, 数据发送完成后,则断开此连接.长连接就是大家建立连接之后, 不主动断开. 双方互相发送数据, 发完了也不主动断开连接, 之后有需要发送的数据就继续通过这个连接发送.TCP连接在默认的情况下就是所谓的长连接, 也就是说连接双方都不主动关闭连接, 这个连接就应该一直存在.下面是辛苦给大家整理的学习路线本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录。

调试经验——使用Matlab绘制f(x)=sin(x)/x的函数图形_matlab sinx/x-程序员宅基地

文章浏览阅读1.7w次,点赞3次,收藏13次。当x趋近于0时,sin(x)/x趋近于1,这是一个重要的极限。如果用Matlab绘制出函数图形,则一目了然。x=linspace(-0.01,0.01,1000);y=sin(x)./x;plot(x,y)图形:那么,当x趋近于正无穷时,函数极限又应该是多少呢?因为sin(x)是有界的,而1/x当x趋近于无穷大时极限为0,因此,根据定理:有界_matlab sinx/x

ROS源码阅读---局部路径规划之DWAPlannerROS分析-程序员宅基地

文章浏览阅读1.1k次,点赞5次,收藏12次。1 体系结构(1)主要成员base_local_planner::LocalPlannerUtil planner_util_; 用来存储运动控制参数以及costmap2d、tf等,会被传入dp_costmap_2d::Costmap2DROS* costmap_ros_;base_local_planner::OdometryHelperRos odom_helper_; 用来辅助获取o..._dwaplannerros

Cocos游戏源码有奖征集活动重磅来袭!-程序员宅基地

文章浏览阅读20次。风。风暴来临,扁舟破风。Cocos引擎中文站举办的游戏源码有奖征集活动将掀起最强风暴。藉此机会,各路游戏开发英豪摩拳擦掌,正欲一显身手,马到成功!峰。峰峦矗立,王者登峰。真正的游戏开发高手将与全国的开发者较量,直待夺取“最强”名号,会当凌绝顶,一览众山小,煮酒论英雄!锋。锋芒初露,剑走偏锋。谁说奇思妙想没有用,有才华的人不甘平庸。就算生活匆忙,工作繁重,但只要有一个机会,就应该不鸣则已,今日惊鸿!...

matlab计算机械臂素的,机械臂动力学——动力学建模-程序员宅基地

文章浏览阅读5.1k次,点赞9次,收藏89次。一、动力学基础概念基本动力学模型建模方法牛顿-欧拉法拉格朗日法连杆质量,连杆质心位置矢量,连杆质心惯性矩阵(通过动力学参数识别获得)二、牛顿-欧拉法运动外推:向外迭代计算连杆的角速度、角加速度和线加速度力外推:计算作用在连杆质心上的惯性力和力矩力矩内推:向内迭代计算关节力矩2.1 运动向外迭代2.1.1 刚体线速度和角速度线速度坐标系{A}为固定,坐标系{B}固连在刚体上。2.1.2 连杆速度连杆..._matlab机械臂惯性矩

CVE-2019-5786 漏洞原理分析及利用-程序员宅基地

文章浏览阅读1.5k次。CVE-2019-5786 漏洞原理分析及利用作者:Kerne7@知道创宇404实验室时间:2020年6月29日从补丁发现漏洞本质首先根据谷歌博客收集相关CVE-2019-5786漏洞的资料:High CVE-2019-5786: Use-after-free in FileReader,得知是FileReader上的UAF漏洞。然后查看https://github.com/chromium/chromium/commit/ba9748e78ec7e9c0d594e7edf7b2c07ea2a90

推荐文章

热门文章

相关标签