我有一个 ejb3 会话 bean 和一个 servlet。bean 可以访问带有一些大表的数据库。servlet 应该从 bean 中检索表的内容并通过 ServletOutputStream 发送数据。如何在 ejb3 bean 和 servlet 之间传输大数据?我无法一次返回包含所有行的列表,因为它不适合内存。
PS。数据作为文件下载。它们不会出现在页面上。
我有一个 ejb3 会话 bean 和一个 servlet。bean 可以访问带有一些大表的数据库。servlet 应该从 bean 中检索表的内容并通过 ServletOutputStream 发送数据。如何在 ejb3 bean 和 servlet 之间传输大数据?我无法一次返回包含所有行的列表,因为它不适合内存。
PS。数据作为文件下载。它们不会出现在页面上。
您可以使用 Externalizable 接口(Serializable 的扩展)跨 EJB 边界传输大文件。这就是我的建议:
ExternalFile
包装/包含一个File
对象Externalizable
writeExternal
包含的文件写入给定的输出流readExternal
将给定的输入流读入一个新的临时文件第 3 步是从 EJB 层发送对象(文件)时的序列化阶段。第 4 步是您的反序列化阶段,它将文件作为数据流接收,并且可以对流执行任何操作。我的 4 建议将其写入临时文件,但您可以通过 servlet 直接将此流传递到任何其他目的地。
希望有帮助。