【问题标题】:Data Streaming from Java EE Application Server来自 Java EE 应用程序服务器的数据流
【发布时间】:2012-05-24 14:23:35
【问题描述】:

我需要从应用服务器 (JBoss) 检索一个大文件(千兆字节)并避免将其加载到内存中,我想通过 EJB 流式传输它。

是否可以将数据作为流从应用服务器中取出?

【问题讨论】:

    标签: java jakarta-ee jboss streaming ejb


    【解决方案1】:

    创建一个HttpServlet,流式传输文件。

    更新 小心你的标题。您不能通过setContentLength() 设置ContentLength-Header,因为它只接受int

    您必须将其设置为:setHeader("Content-Length", (long)length)

    也许这会有所帮助:Using ServletOutputStream to write very large files in a Java servlet without memory issues

    有一个限制,但这取决于客户端。如果客户端将文件保存在内存中,它将无法工作。

    【讨论】:

      【解决方案2】:

      EJB 是指远程 bean 吗?这些 bean 通常基于 RMI,而后者又使用 Java 序列化。您不能使用 RMI 流式传输数据。

      但是,使用 servlet 和 HTTP,这将变得非常简单。只需打开FileInputStream 到您的大文件,然后逐字节复制到servlet output

      记住:

      • 使用输入文件缓冲
      • 一开始设置Content-Length标头,让客户端知道还剩多少数据

      【讨论】:

        猜你喜欢
        • 2016-09-09
        • 2013-04-06
        • 2011-01-31
        • 1970-01-01
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        相关资源
        最近更新 更多