环境:
   1、websphere6,使用插件模式,通过websphere的httpserver的80端口访问其j2eeserver。
   2、jfeechart,常规使用。

问题
   jfeechart图片生成没有问题,就是图片显示不了,表现为左上角有一个叉。

解决方法:
       不要使用插件模式,通过websphere的httpserver访问其j2eeserver,将j2eeserver的端口直接设为80,图片就显示正常。

思考:
jfreechart的图片显示方法是:


<%
String pieGraphURL = request.getContextPath() + "/DisplayChart?filename=" + piefilename;
%>



再看一下DisplayChart调用的核心源码:


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页面上显示时分两步:
1、初始化img容器;
2、调用DisplayChart这个servlet将图片数据写进来。
可是在走httpserver时第二步不会起作用的。

posted on 2006-03-08 21:14 野草 阅读(881) 评论(0)  编辑  收藏 所属分类: deploy

只有注册用户登录后才能发表评论。


网站导航: