サーバー・サイドのキャッシュとタイル・マネージャー

Use IlvTileManager は、サーバー・サイドでキャッシュを管理します。
静的または動的レイヤーは、クライアント・サイドでタイル・ビューと共に使用できます。
静的レイヤーはサーバー側でキャッシュまたはあらかじめ生成できます。キャッシュ・タイルは、背景地図のようにアプリケーションのライフサイクル中は変更されないレイヤーの一部です。キャッシュ・タイルはタイル・マネージャーを介して取得できます。
動的レイヤーはラベリングやネットワーク表示のようにサーバーへの要求間で変更する可能性があります。
タイル・マネージャーは、 IlvTileManager のインスタンスであり、サーバー・サイドでタイルを格納および取得します。 IlvManagerServlet は、サーブレットにインストールされている場合は、こうしたタイル・マネージャーを活用できます。
サーブレットがイメージ要求を受け取ると、現行要求と一致するタイルがタイル・マネージャーによって管理されている場合は、 IlvManagerView から新しいイメージを生成しないで、このキャッシュされたタイルを返します。 タイル・マネージャーがタイルを管理していない場合は、IlvManagerView からイメージを生成して、以降のアクセス用にイメージを管理するようにタイル・マネージャーに要求します。
IlvManagerServletSupport がイメージ要求に応答すると、次のようにタイル・マネージャーを使用します。
if (useTileManager(request)) {
   IlvTileManager tm = getTileManager(request);
   if (tm != null) {
    Object key = getKey(request);
    BufferedImage image = tm.getImage(key);
    if (image == null) {
      image = doGenerateImageImpl( ... );
      tm.putImage(key, image);
     }
    return image;
   }
  }
  return doGenerateImageImpl( ... );
タイル・マネージャーはデフォルトで、 要求に tile=true 形式のパラメーターが含まれる場合に呼び出されます。このようなパラメーターが予期に含まれていると、 useTileManagertrue を返します。 useTileManager メソッドをオーバーライドして、別の状況でタイル・マネージャーを呼び出すことができます。
タイル・マネージャーがインストールされている場合、タイル・マネージャーが取得され、主要オブジェクトがタイルを参照する要求から構成されます。次に、タイル・マネージャーからタイルを取得しようとします。この試みが成功すると、タイルは要求への応答として返されます。
タイルが取得されないと、イメージは通常のイメージ生成プロセスで作成されます。このイメージは今後の取得で使用するようにタイル・マネージャーに渡されます。
デフォルトでは、タイル・マネージャーは IlvManagerServletSupport オブジェクトにインストールされていません。これをサブクラスしてタイル・マネージャーをインストールする必要があります。
オーバーライドするメソッドは、 getTileManager です。デフォルトでは、このメソッドはヌルを返します。
protected IlvTileManager getTileManager(HttpServletRequest request) 
                throws ServletException {
   return null;
}
タイル・マネージャーはデフォルト実装されています。この実装は、ディスクにタイルを格納します。これを使用して getTileManager メソッドの独自の実装を開発できます。
protected IlvTileManager getTileManager(HttpServletRequest request) 
                throws ServletException {
   ServletContext context = request.getSession().getServletContext();
   IlvTileManager tileManager =          (IlvTileManager)context.getAttribute("tileManagerKey");
   if(tileManager == null) {
     tileManager = new IlvFileTileManager(getBase(), getMaxCacheSize(),
      getMinCacheSize());
     context.setAttribute("tileManagerKey", tileManager);
   }
   return tileManager;
}
この実装には、次が必要です。
  • タイルを書き込むベース・ディレクトリー。
  • キャッシュの最大可能サイズ。
  • 最大サイズに達した際にファイルを削除して減らすキャッシュのサイズ。
    最大サイズに達すると、キャッシュは満杯だと見なされ、ファイルが削除されてキャッシュのサイズが指定レベルまで縮小されます。
タイル・マネージャーは ServletContext に格納され、そこから取得されて同じタイル・マネージャーを同じアプリケーションに使用できます。タイル・マネージャーの格納と取得に、別の戦略を使用することができます。
タイルの読み書きと各タイルに生成されるファイル名をカスタマイズできます。タイル・マネージャーのこのデフォルト実装は、x_y_width_height.jpg 形式のファイル名を構成します。この場合、xywidth、 および height は要求の bbox 属性として渡されたイメージ要求のマネージャー座標です。
このファイルは、 IlvFileTileManager の構築時に提供されるベース・ディレクトリーに格納され、そこから取得されます。カスタマイズは IlvFileTileURLFactory で実行できます。これはタイルを識別するキーから URL を構築します。デフォルトのキーは Rectangle2D.Double オブジェクトで、これは要求の bbox パラメーターから作成されます。