繁体   English   中英

在JAVA EE应用程序中导出大量数据

[英]Export large amount of data in JAVA EE Application

我正在研究基于搜索的Java EE应用程序,就像那里的任何搜索引擎一样,它非常简单,一个页面允许用户搜索内容和分页以移动到下一组OF结果。现在我想提供导出数据的功能在文本文件中,但问题是当要导出的数据非常大时,它将消耗大约100MB的JVM内存。

请Java EE专家请教?

我看过这里,但这对我没有太大帮助

您很可能会将整个数据保存在某种集合中,然后将其序列化为文本文件。 正如您所注意到的那样,这可能适用于少量数据,但是当数据量太大时,您的应用程序就会屈服。 在这种情况下,这样做不是一个好方法,因为您永远不会返回查询多少数据。

您应该将查询结果流式传输到输出,即,将每个查询结果写在后面,然后再将其获取,而无需临时保存它。 您可以使用任何OutputStream实现。 如果要从Servlet发送文件,则可能需要在设置正确的内容类型后直接写入Servlet的输出流。

每个会话100 MB的价格是负担得起的,很少有同时用户。 因此,您可以限制并发导出操作的数量,以确保不会耗尽内存。

有很多方法可以做到这一点,包括有限的会话EJB实例池(其他请求会自动等待),相关类的静态变量中的计数器,数据库表(它可以用作过去导出操作的日志),可能监视可用内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM