我正在写剧本!该应用程序公开了 REST API,允许用户生成 PDF 报告。我受到使用旧 Java API 来生成实际报告的要求的限制。那个库有一个方法generate(OutputStream out, ...)
,即需要一个java.io.OutputStream
它写入结果报告的地方。
我的问题是将其与 Play/Akka 集成以提供分块编码中的内容。为此,我需要创建一个Enumerator[Array[Byte]]
其中以某种方式包含OutputStream
来自 Java 库。我想出了一个可行的解决方案,使用PipedOutputSteam
/PipedInputStream
duo 使用管道将库的输出传输到 EnumeratorEnumerator.fromStream
.
我想知道是否有更好的方法来实现这一点,但我似乎无法在 Akka 或 Play 中找到明确的示例!将枚举器与 OutputStreams 集成的文档。我知道 Java 库的阻塞 IO 是设计更好解决方案的限制因素,但也许有一种更简洁的方法来做到这一点。有什么想法吗?
跟进
假设我使用Enumerator.outputStream
,将实际报告生成转移到另一个参与者(可能在另一台机器上)的安全方法是什么?例如,我猜测发送 OutputStream 并不安全(并且只能在本地工作)。
Play 2.1有以下方法:Enumerator.outputStream(a: (OutputStream) ⇒ Unit): Enumerator[Array[Byte]]
这可能正是你想要的。
它的实现专门使用其他 Play 2.1 类,因此如果您使用 Play 2.0,则需要进行一些额外的挖掘才能实现相同的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)