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で実行する限りは問題なくなった。
こちらもバグ報告しておいた。





