私は演劇を書いています!ユーザーが PDF レポートを生成できるようにする REST API を公開するアプリケーション。私は、古い Java API を使用して実際のレポートを生成するという要件に制約されています。そのライブラリにはメソッドがあります。つまり、結果のレポートを書き込む場所generate(OutputStream out, ...)
を取ります。java.io.OutputStream
私の問題は、これを Play/Akka と統合して、コンテンツを Chunked Encoding で提供することです。Enumerator[Array[Byte]]
そのためには、何らかの方法OutputStream
で Java ライブラリの を含むを作成する必要があります。PipedOutputSteam
/ PipedInputStream
duo を使用してライブラリから Enumerator を使用して出力をパイプする実用的なソリューションを思いつきましたEnumerator.fromStream
。
これを達成するためのより良い方法があるかどうか疑問に思っていますが、Akka または Play! で明示的な例を見つけることができないようです。Enumerator を OutputStreams と統合するドキュメント。Java ライブラリのブロッキング IO がより良いソリューションを設計する上での制限要因であることは承知していますが、これを行うためのより適切な方法があるかもしれません。何かご意見は?
ファローアップ
を使用すると仮定するとEnumerator.outputStream
、実際のレポート生成を別のアクター (おそらく別のマシン) に移動する安全な方法は何でしょうか? たとえば、OutputStream の送信は安全ではないと推測しています (ローカルでしか機能しません)。