1

JSF 2.1.7 + Prime Faces + Prime Faces Mobile を使用しています。

画像を参照するページがあります:

<img src="/charts/chart1.png"/>

chart1.png を 2 分ごとに更新するために実行される別のバックグラウンド プロセスがあります。(特定のオンライン URL から画像を取得します)。画像を保存するために使用するコードは次のとおりです。

    public static String saveImage(final String strurl, final String imageFileName){
    //assume the url for the image is valid
    try {
        URL url = new URL(strurl);
        HttpURLConnection  conn = (HttpURLConnection )url.openConnection();
        conn.setConnectTimeout(1000);   //1 sec timeout
        conn.connect();

        File file = new File(imageFileName);
        BufferedImage  image = ImageIO.read(conn.getInputStream());
        ImageIO.write(image, "png", file);
        return file.getAbsolutePath();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

ImageIO.write は、既存のイメージ ファイルを削除し、新しいイメージ ファイルを書き出します。上記の結果、画像ファイルが利用できない数ミリ秒になるため、Web ユーザーは画像を見ることができなくなると思います。

私の質問は次のとおりです。

1) 画像が一時的に利用できない時間があるというのは本当ですか?

2) その場合、これを修正して、ユーザーが常に利用可能な画像を利用できるようにするための可能な解決策は何ですか?

前もって感謝します。=)

4

1 に答える 1

0

これが私がすることです

1)最初に画像を置き換える代わりに、新しい画像 chart2.png を作成します

2)次に、IMG タグの URL をサーブレットを指すように変更します。

にマップされるそのサーブレットで/charts/showchart 、サーブレットで最新の利用可能な PNG をチェックし、それを応答としてストリーミングします。

このようにして、どのように、またはどの画像を表示するかをカスタマイズします。

于 2013-03-05T08:45:22.153 に答える