我正在编写一个Play!应用程序,该应用程序公开了一个REST API,允许用户生成PDF报告。我的要求是使用旧的Java API来执行实际的报告生成。该库有一个方法
我的问题是如何将其与Play / Akka集成以在Chunked编码中提供内容。为此,我需要创建一个
我想知道是否有更好的方法来实现这一点,但我似乎找不到Akka或Play!文档中明确的示例,可以将枚举器与输出流集成。我知道Java库的阻塞IO是设计更好的解决方案的限制因素,但可能有更简洁的方法来解决这个问题。有什么想法吗?
跟进:
假设我使用
generate(OutputStream out, ...)
,也就是它需要一个java.io.OutputStream
,并将结果写入其中。我的问题是如何将其与Play / Akka集成以在Chunked编码中提供内容。为此,我需要创建一个
Enumerator [Array [Byte]]
,它以某种方式包含Java库的OutputStream
。我想出了一个可行的解决方案,它使用PipedOutputSteam
/ PipedInputStream
来将库中的输出导到Enumerator,然后使用Enumerator.fromStream
。我想知道是否有更好的方法来实现这一点,但我似乎找不到Akka或Play!文档中明确的示例,可以将枚举器与输出流集成。我知道Java库的阻塞IO是设计更好的解决方案的限制因素,但可能有更简洁的方法来解决这个问题。有什么想法吗?
跟进:
假设我使用
Enumerator.outputStream
,将实际的报告生成移动到另一个Actor(可能在另一台计算机上)的安全方法是什么?例如,我猜发送OutputStream不安全(并且仅在本地工作)。