stream - wicket:如何从数据库中流式传输资源

标签 stream streaming wicket

我正在尝试为具有数千页的大型网站动态生成站点地图。

是的,我考虑过离线生成站点地图文件并简单地静态提供它,我最终可能会这样做。但我认为这是一个普遍有用的问题:

如何从 Wicket 中的数据库流式传输大数据?

我按照 Wicket SEO page 上的说明进行操作,并且能够使用 DataProvider 获得动态站点地图实现。但它不能扩展 - 当它调用我的 DataProvider 的 iterator() 时,它会耗尽内存带有 count 的方法arg 等于我要返回的对象的总数,而不是分 block 迭代它们。

我认为解决方案在于 WebResource/ResourceStreamingRequestTarget .但是这些类期望 IResourceStream ,最终归结为提供 InputStream实现,它处理字节,而不是数据库记录。我不知道如何实现 length()这种情况下的方法,因为这需要提前访问每条记录来计算总长度。

最佳答案

从 IResourceStream.length() 方法的文档:

    /**
 * Gets the size of this resource in bytes
 * 
 * TODO 1.5: rename to lengthInBytes() or let it return some sort of size object
 * 
 * @return The size of this resource in the number of bytes, or -1 if unknown
 */
long length();

因此,我认为如果您的 IResourceStream 实现告诉您长度未知并且您在从数据库中获取记录时直接流式传输数据,那将是可以的。

关于stream - wicket:如何从数据库中流式传输资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287385/

相关文章:

Perl:将 STDOUT 重定向到两个文件

c# - 当 Stream.Read() 存在时,StreamReader 的目的是什么?

java - 使用 RTMPT 时 Red5 几秒钟后崩溃

python - Hadoop流-昂贵的共享资源(COOL)

php - 通过 php 流式传输 mp3 文件

c++ - fstream 绝对路径不起作用

c# - 在没有预览的情况下打印本地报告 - 超出流大小或 GDI+ C# 中发生一般错误

java - 对于创建/重构启用和/或查看实体之间关联的 wicket 组件有什么建议吗?

java - 是否有任何 API 或工具可用于使网页表高度可配置?

java - Wicket 附加到现有的 Spring 上下文