<< Play frameworkでデッドロック その3 | Home | JBossを狙ったwormにやられてしまいました。 >>
PR: 転職    お墓    エコ    通販    結婚相談所    シルバー    質屋    葬式    漫画    エステサロン   

Play frameworkでデッドロック その4

こりゃあかん、

framework/src/play/server/ServletWrapper.java

private void copyStream(HttpServletResponse servletResponse, InputStream is) throws IOException {
    OutputStream os = servletResponse.getOutputStream();
    byte[] buffer = new byte[8096];
    int read = 0;
    while ((read = is.read(buffer)) > 0) {
        os.write(buffer, 0, read);
    }
    os.flush();
    is.close();
}

というわけで修正。


private void copyStream(HttpServletResponse servletResponse, InputStream is) throws IOException {
    try {
        OutputStream os = servletResponse.getOutputStream();
        byte[] buffer = new byte[8096];
        int read = 0;
        while ((read = is.read(buffer)) > 0) {
            os.write(buffer, 0, read);
        }
        os.flush();
    }
    finally {
        try {
            is.close();
        }
        catch (IOException e) {
            Logger.error("Cannot close input stream.", e);
        }
    }
}

このパッチ当てておけば、とりあえず、warで実行する限りは問題なくなった。

こちらもバグ報告しておいた。




コメント追加 トラックバック送信
このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8