Java 如何从ejb3会话bean返回很长的列表?

Java 如何从ejb3会话bean返回很长的列表?,java,jakarta-ee,ejb-3.0,java-ee-5,Java,Jakarta Ee,Ejb 3.0,Java Ee 5,我有一个ejb3会话bean和一个servlet。bean可以通过一些大表访问数据库。servlet应该从bean中检索表的内容,并通过ServletOutputStream发送数据。如何在EJB3Bean和servlet之间传输大数据? 我不能一次返回包含所有行的列表,因为它不适合内存 注:数据作为文件下载。它们不会出现在页面上。您可以使用Externalizable接口(Serializable的扩展)跨EJB边界传输大型文件。这就是我的建议: 编写一个类,例如包装/包含文件对象的外部文件

我有一个ejb3会话bean和一个servlet。bean可以通过一些大表访问数据库。servlet应该从bean中检索表的内容,并通过ServletOutputStream发送数据。如何在EJB3Bean和servlet之间传输大数据? 我不能一次返回包含所有行的列表,因为它不适合内存


注:数据作为文件下载。它们不会出现在页面上。

您可以使用Externalizable接口(Serializable的扩展)跨EJB边界传输大型文件。这就是我的建议:

  • 编写一个类,例如包装/包含
    文件
    对象的
    外部文件
  • 使该类实现
    外部化
  • 实现
    writeExternal
    将包含的文件写入给定的输出流
  • 执行
    readExternal
    将给定的输入流读取到新的临时文件中
  • 考虑将size和name属性添加到ExternalFile类中,以帮助接收者决定要做什么(记住要写出这些属性,并通过writeExternal和readExternal方法读入它们)
  • 步骤3是从EJB层发送对象(文件)时的序列化阶段。第4步是反序列化阶段,它将文件作为数据流接收,并可以对该流执行任何操作。My 4建议将其写入临时文件,但您可以通过servlet将此流直接传递到任何其他目的地

    希望有帮助