前日の反省
今日、前日のコードでちょっとハマった…(泣
のでメモメモ。
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {…
ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());
ここでサーブレットの出力をZip出力用のストリームで包んでいたわけですが…
ZipEntryを突っ込んでるうちに自動でflushされてしまう(※ServletResponseWrapper#flushBufferが呼ばれてました…)ようで、
ストリームへの再書き込み不可でエラー地獄にはまってました。
この問題は、いったん出力データを溜め込んでからServletOutputStreamに吐き出す方法で解決。
みたいな感じですかね。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
… // 色々詰め込み
resp.getOutputStream().write(baos.toByteArray());
#何も見ずに思い出しながらコード書いてるから間違ってるかもしれませんが。。
上記は解決したからいいのですが、もう一個フレームワーク部分で動きが謎な箇所があって、
どうしてもうまくいかない…明日中になんとかできるよう頑張ってみます。