我有一個servlet通過將HTTP Content-Type設置爲「application/zip
」,將Content-Disposition設置爲「attachment
」並將其寫入響應的OutputStream
;它在我的本地應用程序服務器上部署時運行正常,使瀏覽器顯示彈出窗口以選擇是否要下載文件。文件下載servlet在集羣服務器上的行爲與IE不同
但是,在集羣式jboss服務器上進行部署時,IE在整個傳輸的請求文件信息的0%上掛起,然後失敗,並顯示一條錯誤消息,指出該文件不可下載:更奇怪的是,使用FF和Chrome時,servlet的行爲正確,即與本地主機上的方式相同。
任何線索?
我也可以提供servlet代碼的顯著部分的小片段:
response.setContentType("application/zip; name=" + f.getName());
response.setContentLength((int)f.length());
response.addHeader("Content-Disposition", "attachment;filename=" + f.getName());
byte[] buf = new byte[1024];
int bytesRead;
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
OutputStream os = response.getOutputStream();
while((bytesRead = bis.read(buf)) != -1) {
os.write(buf, 0, bytesRead);
}
os.flush();
bis.close();
我真的不知道,如果問題出在我的servlet代碼或羣集的服務器配置,但我開始猜測第二次機會可能是正確的......關於我的羣集配置中可能出現錯誤的任何想法?
在羣集JBoss服務器上測試應用程序時,您是否使用SSL連接?如果是的話,那可能是解釋 - 我前一段時間有類似的問題。 – simon 2009-04-24 14:02:45
否,兩臺服務器上的普通HTTP – Raibaz 2009-04-24 14:05:46