環(huán)境:
1、websphere6,使用插件模式,通過(guò)websphere的httpserver的80端口訪問(wèn)其j2eeserver。
2、jfeechart,常規(guī)使用。
問(wèn)題:
jfeechart圖片生成沒有問(wèn)題,就是圖片顯示不了,表現(xiàn)為左上角有一個(gè)叉。
解決方法:
不要使用插件模式,通過(guò)websphere的httpserver訪問(wèn)其j2eeserver,將j2eeserver的端口直接設(shè)為80,圖片就顯示正常。
思考:
jfreechart的圖片顯示方法是:
<%
String pieGraphURL = request.getContextPath() + "/DisplayChart?filename=" + piefilename;
%>
再看一下DisplayChart調(diào)用的核心源碼:
public static void sendTempFile(File file, HttpServletResponse response,
String mimeType) throws IOException {
if (file.exists()) {
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file)
);
// Set HTTP headers
if (mimeType != null) {
response.setHeader("Content-Type", mimeType);
}
response.setHeader("Content-Length", String.valueOf(file.length()));
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE, dd MMM yyyy HH:mm:ss z"
);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
response.setHeader(
"Last-Modified", sdf.format(new Date(file.lastModified()))
);
BufferedOutputStream bos = new BufferedOutputStream(
response.getOutputStream()
);
byte[] input = new byte[1024];
boolean eof = false;
while (!eof) {
int length = bis.read(input);
if (length == -1) {
eof = true;
}
else {
bos.write(input, 0, length);
}
}
bos.flush();
bis.close();
bos.close();
}
else {
throw new FileNotFoundException(file.getAbsolutePath());
}
return;
}
可見在web頁(yè)面上顯示時(shí)分兩步:
1、初始化img容器;
2、調(diào)用DisplayChart這個(gè)servlet將圖片數(shù)據(jù)寫進(jìn)來(lái)。
可是在走h(yuǎn)ttpserver時(shí)第二步不會(huì)起作用的。