1 マップ視覚化コンポーネントの概要

Oracle Spatial and Graphマップ視覚化コンポーネント(視覚化コンポーネントとも呼びます)は、Oracle Spatial and Graphによって管理される空間データを使用してマップをレンダリングするための、プログラム可能なツールです。

マップ視覚化コンポーネントには、空間データの問合せおよび地図レンダリングの複雑さを意識させず、より上級のユーザーに対してはカスタマイズ可能なオプションを提供するツールが備わっています。これらのツールは、プラットフォームに依存しない方法でデプロイでき、マップ・レンダリング・アプリケーションと統合するように設計されています。

1.1 マップ視覚化コンポーネントの概要

開発者は、マップ視覚化コンポーネントを使用して、インタラクティブ性の高いマップおよび空間分析をビジネス・アプリケーションに組み込むことができます。

アプリケーションのコンテンツは、様々なWebサービスおよびGeoJSONなどのデータ形式のマップおよびデータと組み合せることができます。Java EEコンテナまたはOracle Java Cloud Serviceにデプロイされます。

マップ視覚化コンポーネントには次が含まれます。

  • 地図製作のレンダリング機能をWebアプリケーションに公開するためのマップ・レンダリング・エンジン。

  • 視覚化機能に対するプログラマブルなアクセスを許可する一連のApplication Program Interface(API)。これらのAPIには、XML、JavaおよびHTML5ベースのJavaScript APIが含まれています。

  • グラフィカル・マップ・ビルダー・ツール。マップ記号の作成、空間データ・レンダリング・ルールの定義、およびマップ視覚化コンポーネント・オブジェクトの作成と編集が行えます。

  • Oracle Maps。インタラクティブな地理空間Webアプリケーションの開発を容易にするマップ・キャッシュ・サーバーおよびFOI (対象地物)サーバーが含まれます。

  • 行政区域(国、州、郡など)のJSONファイルとしてパッケージ化されたコンテンツ。

コア・レンダリング・エンジンは、Java Database Connectivity (JDBC)によってOracleデータベースに接続します。また、データベースからマップ・メタデータ(Map Builderツールによって作成されたマップ定義、スタイル指定ルール、記号など)を読み取り、レンダリング操作の際にそのメタデータを適用して空間データを取得します。

JavaScript APIを使用すると、マップ視覚化コンポーネントのOracle Maps機能を使用する、インタラクティブ性の高いWebアプリケーションを作成できます。

Map Builderツールを使用すると、空間データベース内のマップ、テーマおよび記号メタデータの作成と管理のプロセスを簡略化することができます。このツールの詳細は、「Oracle Map Builderツール」を参照してください。

マップ視覚化コンポーネントのコア機能の上に構築されたOracle Mapsでは、マップ画像タイルをキャッシングするマップ・タイル・サーバーと、データベースからライブ・データを取り出してストリーミングしインタラクティブな地物としてマップ上に表示する対象地物(FOI)サーバーを使用します。HTML5ベースのJavaScript APIとOracle Mapsを併用すると、高度なマッピング・ソリューションが得られます。Oracle Mapsでは、高度なカスタマイズ機能および問合せ機能もサポートしています。

マップ視覚化コンポーネントでは、Oracle Spatial and Graphに格納されている2次元ベクター・ジオメトリ、GeoRasterのデータ、およびOracle Spatial and Graphのトポロジおよびネットワーク・データ・モデル内のデータをサポートしています。マップ視覚化コンポーネントは、Open Geospatial Consortium (OGC)に準拠したWeb Map Service (WMS)およびWeb Map Tile Service (WMTS) サーバーでもあります。

 

1.1.1 マップ視覚化コンポーネント・アーキテクチャ

次の図に、マップ視覚化コンポーネントのアーキテクチャを示します。

図1-1 マップ視覚化コンポーネント・アーキテクチャ

図1-1の説明が続きます
「図1-1 マップ視覚化コンポーネント・アーキテクチャ」の説明

前述の図に示すように、次のような処理が行われます。

  • マップ視覚化コンポーネントは、HTTPプロトコルを使用して、クライアントのWebブラウザまたはアプリケーションあるいは外部のWebサービスと通信できます。

  • クライアントWebブラウザまたはアプリケーションでは、HTTPプロトコルを使用して、JEEコンテナまたはJavaクラウド・サービス内のマップ視覚化レンダリング・エンジンと通信します。

  • データベースまたはデータベース・クラウド・サービスへのJDBCコールによって、空間データ・アクセス(Oracle Spatial and Graphのデータの読取りおよび書込み)を実行します。

  • データベースまたはデータベース・クラウド・サービスには、マッピング・メタデータの他に、Oracle Spatial and Graphが含まれます。

1.2 マップ視覚化コンポーネントの開始

開始するには、次の手順を実行します。

  1. マップ視覚化コンポーネントをインストールおよびデプロイする前または後で、「マップ視覚化の概念」を読んで、重要な条件および概念を理解するようにしてください。
  2. 前提条件となるソフトウェアを保有していることを確認してください(「マップ視覚化コンポーネントの前提条件となるソフトウェア」を参照してください)。
  3. マップ視覚化コンポーネントを(必要に応じて)インストールしデプロイします。
  4. 一部の基本タスクにマップ視覚化コンポーネントを使用します。たとえば、Oracle Mapsアプリケーション(「Oracle Maps」を参照)を作成します。
  5. オプションとしてMap Builderツール(「Oracle Map Builderツール」を参照)を使用し、スタイル、テーマおよびマップと、それぞれのオプションについて理解しておきます。また、空間データをプレビューすることもできます。

1.3 マップ視覚化コンポーネントの前提条件となるソフトウェア

マップ視覚化コンポーネントを使用するには、次のソフトウェアが必要です。

マップ視覚化コンポーネントは、J2SE SDKのHeadless AWTメカニズムもサポートしており、これにより、X11 DISPLAY変数を設定することなく、視覚化コンポーネントをLinuxまたはUNIXシステムで実行できるようになります。LinuxシステムまたはUNIXシステムでAWT Headlessモードを有効にするには、コマンドラインに次のように指定してマップ視覚化コンポーネントを起動します。

-Djava.awt.headless=true

1.4 視覚化コンポーネントでのMapViewerベース・アプリケーションのデプロイ

MapViewerベースのアプリケーションを保有している場合、マップ視覚化コンポーネントとともにそれらをデプロイできます。

既存のMapViewer構成を引き続き使用する場合、この項の説明に従ってください。

MapViewer V2 APIを使用して記述されたアプリケーションは、マップ視覚化コンポーネントで動作します。

(既存のMapViewerの構成を、Oracle Fusion Middlewareリリース12.2.1.x.0以降のWebLogic Serverで使用することもできます。)

1.5 マップ視覚化コンポーネントの管理

このトピックでは、マップ視覚化コンポーネントの「管理」ページの概要と、ユーザーが実行できる管理および構成タスクの一部(新規データソースの追加、Oracle Mapsが使用するマップ・タイル層の管理、ロギング・レベルの設定など)について説明します。

1.5.1 マップ視覚化コンポーネントの「管理」ページへのログイン

マップ視覚化コンポーネントが適切に実行されていることを確認した後、マップ視覚化コンポーネントの「管理」ページにログインすることをお薦めします。そのためには、まずマップ視覚化コンポーネントの「ようこそ」ページ(通常はhttp://<host>:<port>/mapviewer<host>および<port>は、インストールの正しい値に置き換えてください)を表示します。

右上の「管理」リンクをクリックして、マップ視覚化コンポーネントの「管理」ページを表示します。

この管理ページを使用して、キャッシュ・データの消去、タイル層の作成、タイル層の管理、サーバーの再起動(「モニタリング」リンクを使用して再起動)などの管理タスクを実行できます。

1.5.2 マップ視覚化コンポーネントの構成

マップ視覚化コンポーネントの実行のためのデフォルト構成設定が適切ではない場合、$MAPVIEWER_HOME/WEB-INF/confディレクトリにある視覚化コンポーネント構成ファイルmapViewerConfig.xmlを編集して、マップ視覚化コンポーネントを構成できます。このファイルは、テキスト・エディタまたはマップ視覚化コンポーネントの「管理」ページで変更できます。

このファイルを変更したら、変更を反映するためにコンテナを再起動する必要がありますが、スタンドアロンGlassfishインスタンスとともにマップ視覚化コンポーネントをインストールしている場合、かわりにマップ視覚化コンポーネントの「管理」ページを使用して(他のアプリケーションがデプロイされ実行されている可能性のあるJava EEインスタンス全体ではなく)マップ視覚化コンポーネントのみを再起動できます。

マップ視覚化コンポーネント構成ファイルでは、次の情報がXML形式で定義されます。

  • ログ情報。コンテナ制御ロギング(推奨)または<logging>要素で定義されます(「ログ情報の指定」を参照)

  • マップ画像ファイル情報。<save_images_at>要素で定義されます(「マップ・ファイル格納情報およびライフ・サイクル情報の指定」を参照)

  • ファイアウォールを隔てた外部情報にアクセスするためのWebプロキシ情報。<web_proxy>要素で定義されます(「Webプロキシの指定」を参照)

  • グローバル・マップ「ルック・アンド・フィール」構成。<global_map_config>要素で定義されます(「グローバル・マップ構成オプションの指定」を参照)

  • 内部空間データ・キャッシュの設定値。<spatial_data_cache>要素で定義されます(「空間データ・キャッシュのカスタマイズ」を参照)

  • 永続マップ・データソース。<map_data_source>要素で定義されます(「永続mapデータソースの定義」を参照)

  • セキュリティ構成。<security_config>要素で定義されます。

  • WMSサービス構成。<wms_config>要素で定義されます。

  • 外部属性データ・プロバイダ登録。<ns_data_provider>要素で定義されます。

  • マップ・タイル・サーバー構成。<map_tile_server>要素で定義されます。

  • UTFグリッドのライフサイクル・パラメータ。<utfgrid_life_cycle>要素で定義されます。

  • 外部空間データ・プロバイダ登録。<s_data_provider>要素で定義されます。

  • マップ・データソース。<map_data_source>要素で定義されます。

  • マップ・データ・サーバーのストリーム・パラメータ。<mds_config>要素で定義されます。

  • OAMのログアウト・パラメータ。<oam_logout>要素で定義されます。

別途指定されていないかぎり、mapViewerConfig.xmlファイルのすべてのパス名は、ファイルが格納されているディレクトリに対する相対パスです。

例1-1 サンプルのマップ視覚化コンポーネント構成ファイル

例1-1は、mapViewerConfig.xmlファイルの例を示しています。

<?xml version="1.0" ?>
<!-- This is the configuration file for the map visualization component. -->
<!-- Note: All paths are resolved relative to this directory (where 
           this config file is located), unless specified as an absolute 
           path name.
 -->
 
<MapperConfig>
 
  <!-- ****************************************************************** -->
  <!-- ************************ Logging Settings ************************ -->
  <!-- ****************************************************************** -->
 
  <!-- Uncomment the following to modify logging. Possible values are:
       log_level = "fatal"|"error"|"warn"|"info"|"debug"|"finest"  
                 default: info) ;
       log_thread_name = "true" | "false" ;
       log_time = "true" | "false" ;
       one or more log_output elements.
  -->
  <!--
    <logging log_level="info" log_thread_name="false"
             log_time="true">
       <log_output name="System.err" />
       <log_output name="../log/mapviewer.log" />
    </logging>
  -->
 
  <!-- ****************************************************************** -->
  <!-- ********************** Map Image Settings ************************ -->
  <!-- ****************************************************************** -->
 
  <!-- Uncomment the following only if you want generated images to 
       be stored in a different directory, or if you want to customize
       the life cycle of generated image files.
 
       By default, all maps are generated under 
       $ORACLE_HOME/lbs/mapviewer/web/images. 
 
       Images location-related attributes:
       file_prefix: image file prefix, default value is "omsmap"
       url:  the URL at which images can be accessed. It must match the 'path'
             attribute below. Its default value is "%HOST_URL%/mapviewer/images"
       path: the corresponding path in the server where the images are
             saved; default value is "%ORACLE_HOME%/lbs/mapviewer/web/images"
 
       Images life cycle-related attributes:
       life: the life period of generated images, specified in minutes. 
             If not specified or if the value is 0, images saved on disk will 
             never be deleted. 
       recycle_interval:  this attribute specifies how often the recycling 
             of generated map images will be performed. The unit is minute.
             The default interval (when not specified or if the value is 0) 
             is 8*60, or 8 hours.
             
   -->
  <!--
   <save_images_at  file_prefix="omsmap"
                   url="http://mypc.mycorp.com:8888/mapviewer/images"
                   path="../web/images"
   /> 
  -->
 
  <!-- ****************************************************************** -->
  <!-- ********************* IP Monitoring Settings ********************* -->
  <!-- ****************************************************************** -->
 
  <!-- Uncomment the following to enable IP filtering for administrative 
        requests.
    Note:
    - Use <ips> and <ip_range> to specify which IPs (and ranges) are allowed.
      Wildcard form such as 20.* is also accepted. Use a comma-delimited 
      list in <ips>.
 
    - Use <ips_exclude> and <ip_range_exclude> for IPs and IP ranges
      prohibited from accessing eLocation.
 
    - If an IP falls into both "allowed" and "prohibited" categories, it is
      prohibited.
 
    - If you put  "*" in an <ips> element, then all IPs are allowed, except
      those specified in <ips_exclude> and <ip_range_exclude>.
      On the other hand, if you put "*" in an <ips_exclude> element, no one
      will be able to access the map visualization component (regardless of whether an IP is in
      <ips> or <ip_range>).
 
    - You can have multiple <ips>, <ip_range>, <ips_exclude>, and
      <ip_range_exclude> elements under <ip_monitor>.
 
    - If no <ip_monitor> element is present in the XML configuration
      file, then no IP filtering will be performed (all allowed).
 
    - The way the map visualization component determines if an IP is allowed is:
 
          if(IP filtering is not enabled) then allow;
          if(IP is in exclude-list) then not allow;
          else if(IP is in allow-list) then allow;
          else not allow;  
   -->
 
  <!--
     <ip_monitor>
          <ips> 138.1.17.9, 138.1.17.21, 138.3.*, 20.* </ips>
          <ip_range> 24.17.1.3 - 24.17.1.20 </ip_range>
          <ips_exclude> 138.3.29.* </ips_exclude>
          <ip_range_exclude>20.22.34.1 - 20.22.34.255</ip_range_exclude>
     </ip_monitor>
   -->
 
  <!-- ****************************************************************** -->
  <!-- ********************** Web Proxy Setting  ************************ -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and modify the following to specify the web proxy setting.
       This is only needed for passing background image URLs to
       the map visualization component in map requests or for setting a logo image URL, if
       such URLs cannot be accessed without the proxy.
   -->
 
  <!--
    <web_proxy host="www-proxy.my_corp.com"  port="80" />
  -->
 
  <!-- ****************************************************************** -->
  <!-- *********************** Security Configuration ******************* -->
  <!-- ****************************************************************** -->
  <!-- Here you can set various security related configurations of the map visualization component.
  -->
 
  <security_config>
    <disable_direct_info_request> false </disable_direct_info_request>
  </security_config>
 
  <!-- ****************************************************************** -->
  <!-- *********************** Global Map Configuration ***************** -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and modify the following to specify systemwide parameters
       for generated maps. You can specify your copyright note, map title, and
       an image to be used as a custom logo shown on maps. The logo image must 
       be accessible to this map visualization component and in either GIF or JPEG format.
       Notes:
         -  To disable a global note or title, specify an empty string ("") for
            the text attribute of <note> and <title> element.
         - position specifies a relative position on the map where the
                  logo, note, or title  will be displayed. Possible values are
                  NORTH, EAST, SOUTH, WEST, NORTH_EAST, SOUTH_EAST,
                  SOUTH_WEST, NORTH_WEST, and CENTER.
         - image_path specifies a file path or a URL (starts with "http://")
                    for the image.
 
       <rendering> element attributes:
       - Local geodetic data adjustment: If allow_local_adjustment="true",
         The map visualization component automatically performs local data
         "flattening" with geodetic data if the data window is less than
         3 decimal degrees. Specifically, the map visualization component performs a simple
         mathematical transformation of the coordinates using a tangential
         plane at the current map request center.
         If allow_local_adjustment="false" (default), no adjustment is
         performed.
       - Automatically applies a globular map projection (geodetic data only): 
         If use_globular_projection="true", The map visualization component will 
         apply a globular projection on the fly to geometries being displayed. 
         If use_globular_projection="false" (the default), The map visualization component does no map 
         projection to geodetic geometries. This option has no effect on 
         non-geodetic data.
   -->
 
  <!--
    <global_map_config>
        <note text="Copyright 2009, Oracle Corporation" 
              font="sans serif" 
              position="SOUTH_EAST"/>
        <title  text="MapViewer Demo" 
                font="Serif"
                position="NORTH" />
        <logo image_path="C:\\images\\a.gif"  
              position="SOUTH_WEST" />
 
        <rendering allow_local_adjustment="false" 
                   use_globular_projection="false" />
    </global_map_config>
  -->
 
  <!-- ****************************************************************** -->
  <!-- ****************** Spatial Data Cache Setting  ******************* -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and modify the following to customize the spatial data cache
       used by the map visualization component. The default is 64 MB for in-memory cache.
 
       To disable the cache, set max_cache_size to 0.
 
       max_cache_size:  Maximum size of in-memory spatial cache of the map visualization component.
                        Size must be specified in megabytes (MB).
       report_stats:    If you would like to see periodic output of cache
                        statistics, set this attribute to true. The default
                        is false.
   -->
 
  <!--
    <spatial_data_cache   max_cache_size="64"
                          report_stats="false" 
    />
  -->
 
  <!-- ****************************************************************** -->
  <!-- ****************** Custom WMS Capabilities Info ****************** -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and modify the following tag if you want the map visualization component to
       use the following information in its getCapabilities response.
       Note: all attributes and elements of <wms_config> are optional.
  -->
  <!--
  <wms_config host="www.my_corp.com" port="80">
    <title>
        WMS 1.1 interface for Oracle Map visualization component
    </title>
    <abstract>
        This WMS service is provided through the map visualization component.
    </abstract>
    <keyword_list>
       <keyword>bird</keyword>
       <keyword>roadrunner</keyword>
       <keyword>ambush</keyword>
    </keyword_list>    
    <sdo_epsg_mapfile>
      ../config/epsg_srids.properties
    </sdo_epsg_mapfile>
  </wms_config>
  -->
 
  <!-- ****************************************************************** -->
  <!-- **************** Custom Non-Spatial Data Provider **************** -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and add as many custom non-spatial data provider as
       needed here, each in its own <ns_data_provider> element.
       You must provide the id and full class name here. Optionally you
       can also specify any number of global parameters, which the map visualization component
       will pass to the data provider implementation during initialization. 
       The name and value of each parameter is interpreted only by the 
       implementation.
  -->
 
  <!-- this is the default data provider that comes with the map visualization component; 
       refer to the documentation on how to use it.
 
  <ns_data_provider
    id="defaultNSDP" 
    class="oracle.sdovis.NSDataProviderDefault" 
  />
  -->
 
  <!-- this is a sample NS data provider with prameters:
  <ns_data_provider
    id="myProvider1" class="com.mycorp.bi.NSDataProviderImpl" >
 
    <parameters>
      <parameter name="myparam1" value="value1" />
      <parameter name="p2"       value="v2"     />
    </parameters>
 
  </ns_data_provider>
  -->
 
  <!-- ****************************************************************** -->
  <!-- *******************  Map Tile Server Setting  ******************* -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and modify the following to customize the map tile server. 
 
       <tile_storage> specifies the default root directory under which the 
       cached tile images are to be stored if the cache instance configuration
       does not specify the root directory for the cache instance. If the 
       default root directory is not set or not valid, the default root 
       direcotry will be set to be $MAPVIEWER_HOME/web/tilecache
       
          default_root_path:  The default root directory under which the cached 
                              tile images are stored. 
  -->
 
  <!--
     <map_tile_server>
       <tile_storage default_root_path="/scratch/tilecachetest/"/>
    </map_tile_server>
  -->
 
  <!-- ****************************************************************** -->
  <!-- ******************** Predefined Data Sources  ******************** -->
  <!-- ****************************************************************** -->
  <!-- Uncomment and modify the following to predefine one or more data 
       sources.
       Note: You must precede the jdbc_password value with a '!' 
             (exclamation point), so that when the map visualization component starts the next
             time, it will encrypt and replace the clear text password. 
  -->
 
  <!-- 
  <map_data_source name="mvdemo"
                   jdbc_host="elocation.example.com"
                   jdbc_sid="orcl"
                   jdbc_port="1521"
                   jdbc_user="scott"
                   jdbc_password="!password" 
                   jdbc_mode="thin"
                   number_of_mappers="3"
   />
   -->
 
</MapperConfig>

このマップ視覚化コンポーネントの構成トピックには、次のサブトピックがあります。

1.5.2.1 ログ情報の指定

マップ視覚化コンポーネントには、ランタイム情報およびイベントを記録するための柔軟なロギング・メカニズムが備わっています。ログ出力の粒度、量、形式および出力先を設定できます。ログ・ファイルの最大サイズや、自動的なログ・ファイル・ローテーションも設定できます。

マップ視覚化コンポーネントのロギングを構成する方法は2つあります。コンテナ制御ロギングと、構成ファイルの<logging>要素を使用する方法です。

コンテナ制御のロギング

mapViewerConfig.xmlファイルの<logging>要素がコメント・アウトされているか、見つからない場合、マップ視覚化コンポーネントはコンテナ制御ロギングを使用します。特に、次のログ出力を使用します。

  • すべてのWebサーバー(マップ、タイル、地物)のメッセージに、oracle.mapviewer.ws

  • すべてのユーザー・アクセスに、oracle.mapviewer.access

  • すべてのレンダリング(マップ、テーマ、地物)のメッセージに、oracle.mapviewer.sdovis

  • すべての管理コンソールのログ・メッセージに、oracle.mapviewer.webconsole

<logging>要素の使用

mapViewerConfig.xmlファイルの<logging>要素が使用中の場合(つまり、<logging>要素がコメント・アウトされていないか、見つかる場合)、マップ視覚化コンポーネントはコンテナ制御ロギングを使用するかわりに、その情報を使用します。<logging>要素は、次の属性とサブ要素を含むことができます。

  • console_log_level属性では、ログに記録される情報のレベルが制御され、このレベルによってログ出力量が左右されます。console_log_level属性には、FATALERRORWARNINFODEBUGおよびFINESTという値(ログ出力量が最も少ないレベルから最も多いレベルの順)を設定します。FATALレベルでは出力されるログ情報が最も少なくなり(回復不能なイベントのみがログに記録されます)、他のレベルでは前述にリストした順で含まれるログ情報が多くなり、FINESTレベルではほとんどの情報がログに記録されます。本番作業では、WARNまたはより制限の大きいレベル(ERRORまたはFATAL)をお薦めします。ただし、デバッグの場合は制限のより小さいレベルに設定する必要があります。

  • file_limit属性は、ログ・ファイルの最大ファイル・サイズを制御します。単位はMb、デフォルト値は50 (つまり、ログ・ファイルの最大サイズのデフォルト値が50Mb)です。

  • file_count属性は、作成されるログ・ファイルの数を決定します。ファイルはローテーションされます(つまり、最後のログ・ファイルが最大サイズに達すると、最初のログ・ファイルが再利用されます)。デフォルト値は10です。

  • <logger>サブ要素では、特定のログ出力のログ・レベルを指定します。

  • <log_output>サブ要素では、ログ情報の出力先が識別されます。デフォルトで、ログ・レコードはシステム・エラー・コンソールに書き込まれます。この設定は、システム出力コンソールまたは1つ以上のファイル、あるいはなんらかの組合せに変更できます。複数の<log_output>サブ要素で複数のデバイスを指定した場合、ログ・レコードは、同じロギング・レベルおよび属性を使用してすべてのデバイスに送信されます。

1.5.2.2 マップ・ファイル格納情報およびライフ・サイクル情報の指定

マップ画像ファイル情報は、<save_images_at>要素で指定します。デフォルトで画像は、$ORACLE_HOME /lbs/mapviewer/web/imagesディレクトリに格納されます。画像の格納用に別のディレクトリを指定する場合を除き、<save_images_at>要素を変更する必要はありません。

マッピング・クライアントは、<map_request>要素のformat属性をGIF_URLまたはPNG_URLに設定することで、マップ視覚化コンポーネントが実際のマップ画像データではなく画像ファイルのURLを返すようにリクエストできます。この場合、マップ視覚化コンポーネントは、リクエストされたマップ画像を、マップ視覚化コンポーネントが実行されているホスト・システム上にファイルとして保存し、画像ファイルのURLを含むレスポンスをマップ・クライアントに返します。

<save_images_at>要素の属性として、次のマップ画像ファイル情報を指定できます。

  • file_prefix属性では、マップ画像ファイル接頭辞が指定されます。マップ画像ファイル名は、固定のファイル接頭辞の後に、シリアル番号および画像型接尾辞が続きます。たとえば、マップ画像ファイル接頭辞がomsmapである場合、考えられるGIFマップ画像ファイルにはomsmap1.gifがあります。

    デフォルト値: file_prefix=omsmap

  • url属性では、マップ画像のベースURLが指定されます。このURLは、マップ視覚化コンポーネント・ホスト上ですべてのマップ画像ファイルが保存されているディレクトリを指します。マッピング・クライアントに送信されるマップ画像URLは、マップ画像のベースURLにマップ画像ファイル名を加えたものです。たとえば、マップ画像のベースURLがhttp://dev04.example.com:1521/mapviewer/imagesの場合、omsmap1.gif のマップ画像URLはhttp://dev04.example.com:1521/mapviewer/images/omsmap1.gifになります。

    デフォルト値: url=$HOST_URL/mapviewer/images

  • path属性では、マップ視覚化コンポーネント・ホスト・システム上ですべてのマップ画像ファイルが保存されるディレクトリのパスが指定されます。このディレクトリは、HTTPによるアクセスが可能で、マップ画像URLと一致する必要があります。path属性で指定されたディレクトリに保存されたマップ画像ファイルは、url属性で指定されたURLからアクセスできる必要があります。

    ただし、マップ視覚化コンポーネントをWebLogic Serverにデプロイする場合、path属性(../web/images)のデフォルト値は正しくありません。この場合のパス属性は、../../images,です。これは、物理的な"images"ディレクトリがmapviewer.ear/web.war/imagesであるためです。相対パスを使用すると、物理ディレクトリを解決するpath属性の値は../../imagesになります。

  • life属性では、生成されたマップ画像が削除されるまでに確実にファイル・システム上にとどまる分数が指定されます。life属性が指定された場合、recycle_interval属性によって、マップ視覚化コンポーネントが削除対象のファイルの有無をチェックする頻度が制御されます。

    デフォルト: マップ視覚化コンポーネントは、生成されたマップ画像を削除しません。

  • recycle_interval属性では、life属性値の分数より長くファイル・システム上に存在する画像ファイルを削除できるかどうかをマップ視覚化コンポーネントがチェックする間隔が分数で指定されます。

    デフォルト値: 480 (8時間)

1.5.2.3 Webプロキシの指定

マップ視覚化コンポーネント・サーバーは、URLを介してバックグラウンド・イメージを取得したり、外部WMSサーバーに接続してそのマップ画像をフェッチしたりするために、外部Webサーバーに対してHTTP接続を実行する必要がある場合もあります。この場合、マップ視覚化コンポーネントとターゲットWebサーバー間にファイアウォールがある場合、ファイアウォールによってブロックされないように、マップ視覚化コンポーネントへのHTTPプロキシ情報を指定する必要があります。次の例では、Webプロキシ情報を指定しています。

<web_proxy host="www-proxy.mycorp.com" port="80" />

Webプロキシが認証を要求する場合は、userおよびpassword属性を指定できます。パスワード値が感嘆符(!)記号の後にある場合、パスワード値は最初に構成ファイルをロードしている間に暗号化されます。次に例を示します。

<web_proxy host="www-proxy.mycorp.com" port="80" user="uservalue" password="!pwdvalue" />
1.5.2.4 グローバル・マップ構成オプションの指定

マップ視覚化コンポーネントで生成される各マップの表示について、次のグローバル・ルックアンドフィール・オプションを指定できます。

  • タイトル

  • 注釈(著作権の記述または脚注など)

  • ロゴ(カスタム・シンボルまたは企業ロゴ)

  • ローカル測地データ調整

  • 子午線180度に沿ったジオメトリの分割

これらのオプションを指定するには、<global_map_config>要素を使用します。次に例を示します。

<global_map_config>
    <note text="Copyright (c) 2009, Example Corporation"
              font="sans serif"
              position="SOUTH_EAST"/>
    <title  text="Map Courtesy of Example Corp."
              font="Serif"
              position="NORTH"/>
    <logo image_path="C:\\images\\a.gif"
              position="SOUTH_WEST"/>

    <rendering allow_local_adjustment="false"
               use_globular_projection="false"/>
</global_map_config>

マップ・タイトルは、<global_map_config>要素の<title>要素を使用して設定します。また、個々のマップ・リクエストで<map_request>要素のtitle属性を指定することで、マップ・タイトルを設定できます。この場合、マップ視覚化コンポーネント構成ファイル内のグローバル・タイトルのかわりに、マップ・リクエスト内のタイトルが使用されます。<title>要素の属性については、次の点に注意してください。

  • text属性ではタイトル文字列が指定されます。

  • font属性ではフォントが指定されます。フォントが、マップ視覚化コンポーネントが実行されているシステムに存在している必要があります。

  • position属性では、マップ上でのマップ・タイトルの描画位置を決定する際に、位置設定のヒントがマップ視覚化コンポーネントに提供されます。指定できる値は、NORTHEASTSOUTHWESTNORTH_EASTSOUTH_EASTSOUTH_WESTNORTH_WESTおよびCENTERです。

    デフォルト値: NORTH

マップの注釈は、<global_map_config>要素の<note>要素を使用して設定します。<note>要素の属性については、次の点に注意してください。

  • text属性では注釈文字列が指定されます。

  • font属性ではフォントが指定されます。フォントが、マップ視覚化コンポーネントが実行されているシステムに存在している必要があります。

  • position属性では、マップ上でのマップの注釈の描画位置を決定する際に、位置設定のヒントがマップ視覚化コンポーネントに提供されます。指定できる値は、NORTHEASTSOUTHWESTNORTH_EASTSOUTH_EASTSOUTH_WESTNORTH_WESTおよびCENTERです。

    デフォルト値: SOUTH_EAST

マップ・ロゴは、<global_map_config>要素の<logo>要素を使用して設定します。マップ・ロゴ画像は、JPEGまたはGIFのいずれかの形式である必要があります。この画像は、ローカル・ファイル・システムに格納し、マップ視覚化コンポーネント・インスタンスが画像にアクセスできるようにするか、画像のURLを指定してWebから取得できます。マップ・ロゴを指定するには、マップ視覚化コンポーネント構成ファイルで<map_logo>要素を非コメント化し、必要に応じてこの要素の属性を編集します。

<logo>要素の属性については、次の点に注意してください。

  • image_path属性では、有効なファイル・パス名またはhttp://で始まるURLが指定される必要があります。

  • position属性では、マップ上でのマップ・ロゴの描画位置を決定する際に、位置設定のヒントがマップ視覚化コンポーネントに提供されます。指定できる値は、NORTHEASTSOUTHWESTNORTH_EASTSOUTH_EASTSOUTH_WESTNORTH_WESTおよびCENTERです。

    デフォルト値: SOUTH_WEST

ファイアウォールの外側のURLからロゴ画像を取得する場合、マップ視覚化コンポーネントがロゴ画像を取得するためのWebプロキシの設定が必要となる場合があります。Webプロキシの指定については、「Webプロキシの指定」を参照してください。

また、マップ凡例を指定する場合は、凡例の位置がマップ・タイトル、注釈またはロゴの位置と同じでないことを確認してください。(マップ凡例については、「マップ凡例」を参照してください。マップ凡例のデフォルト位置はSOUTH_WESTです。)

マップ・データ・ウィンドウが3度(10進)未満の場合、マップ視覚化コンポーネントによって測地データが表示される前に、自動的にローカルの非測地座標系に投影されるようにするには、<rendering>要素でallow_local_adjustment="true"と指定します。

マップ視覚化コンポーネントにより球面投影(つまり、世界の表示に適したマップ投影であり、具体的にはマップ視覚化コンポーネントの正距方位図法があります)が自動的に適用されるようにするには、<rendering>要素でuse_globular_projection="true"と指定します。このオプションは測地データのみに適用されます。

1.5.2.5 空間データ・キャッシュのカスタマイズ

マップ視覚化コンポーネントで空間データに使用されるメモリー内キャッシュをカスタマイズするには、<spatial_data_cache>要素を使用します。次に例を示します。

<spatial_data_cache   max_cache_size="64"
                      report_stats="true"
/>

<spatial_data_cache>要素の属性として、次の情報を指定できます。

  • max_cache_size属性では、メモリー内キャッシュの最大MB数が指定されます。

    デフォルト値: 64

  • report_stats属性は、trueに設定されている場合、マップ視覚化コンポーネント・サーバーに、キャッシュ済のオブジェクト数、キャッシュ・オブジェクト全体のサイズ、内部キャッシュ構造の効率に関するデータなど、キャッシュ統計を定期的(5分ごと)に出力するように指示します。統計はデータソースおよび事前定義済テーマごとに提供されます。これはメモリー内キャッシュの最適な設定を決定する場合に役立ちます。たとえば、メモリー・キャッシュに一部のテーマについてのすべてのジオメトリ・データを確保する場合は、これらのテーマを格納するのに十分なmax_cache_size値を指定する必要があります。

    デフォルト値: false

構成ファイルでこの要素がコメント化されている場合でも、空間データ・キャッシュはデフォルトで常に使用可能です。空間データのキャッシュを完全に使用不可にするには、max_cache_size属性の値を0(ゼロ)に指定する必要があります。

注意:

前のリリースでサポートされていたディスクベースの空間キャッシュは、必要な場合(つまり、キャッシュ後にキャッシュ済オブジェクトを頻繁に再取得する必要がない場合)に、データベースから空間オブジェクトを直接フェッチするより効率が悪い場合が多いことがパフォーマンス・テストでわかったため、サポートされなくなりました。

事前定義済テーマのキャッシュの詳細は、「事前定義済テーマのキャッシュ」を参照してください。

1.5.2.6 セキュリティ構成の指定

<security_config>要素を使用すると、リクエスト内の<info_request>要素をマップ視覚化コンポーネントが拒否するかどうかを指定できます。<info_request>要素は、単純なSQL文を実行して結果行をプレーン・テキストまたはXML形式で返すようマップ視覚化コンポーネントに要求するクライアントからのリクエストのタイプです。このリクエストは、マップ視覚化コンポーネント・アプリケーションがマップに表示された地物を特定したり、単純な空間検索問合せを実行したりする際によく使用されます。

ただし、マップ視覚化コンポーネント・データソース情報を公開すると、悪質な攻撃者がこの機能を乱用し、機密情報を取得するおそれがあります。これを防止するには、アクセス権が非常に制限され、機密情報以外の情報しか提供しないデータベース・スキーマにマップ視覚化コンポーネントを常に接続するよう徹底する必要があります。また、次のように<security_config>要素を指定して、<info_request>リクエストをすべて拒否することもできます。

<security_config>
  <disable_direct_info_request> true </disable_direct_info_request>
</security_config>

ただし、この設定は、一部のマップ視覚化コンポーネント機能に影響することに注意してください。たとえば、マップ視覚化コンポーネントJava APIのidentify()メソッドが機能しなくなるので、アプリケーションでは他の手段を使用して独自のidentify()メソッドを実装する必要があります。

マップ視覚化コンポーネントの組込みプロキシ・サーブレットの通信が許可されているリモートURLも定義できます。このようなURLを区切るには、カンマを使用します。URLを* (アスタリスク)ワイルドカード文字で終了すると、1つのパスで始まる複数のURLにできます。次の例では、1つのリモートURLを指定しています。

<security-config>
    …
    <proxy_enabled_hosts>
      foo.com:8080/mapviewer 
    </proxy_enabled_hosts>
    …
</security-config>

自己署名証明書を使用する、外部のWebサイトとのマップ視覚化コンポーネントのHTTPS (SSL)接続を容易にするために、ここでそれらの証明書を登録する場合があります。HTTPS接続が必要なサーバーのそれぞれに、1つのエントリを使用します。次の例は、1つのエントリの指定の一部を示しています。

<security_config>
    …
    <certificates>
        <entry>
           <host_name>fooserver.com</host_name>
           <keystore_file>/scratch/fooserver.jks</keystore_file>
           <key>123456</key>
        </entry>
    </certificates>
    …
</security_config>

各証明書の<entry>要素のサブ要素は、次のとおりです。

host_name属性は、HTTPS接続が必要なサーバーのIPアドレスまたはドメイン名を指定します。

keystore_file属性は、1つの自己署名証明書を含むファイルを指定します。サーバー・サイトから証明書(通常は.pemファイル)を取得すると、Javaのkeytoolコマンドを使用してキー・ストアを作成できます。次に例を示します。

keytool -import -file fooserver.pem -alias fooserver -keystore fooserver.jks

key属性は、キー・ストア・ファイルの作成時にユーザーが提供したパスワードを指定します。(これは、キー・ストア・ファイル自体の整合性を確実にするために使用されます。)

1.5.2.7 カスタム空間プロバイダの登録

マップ視覚化コンポーネントでは、シェープファイルなどの外部(Oracle Spatial and Graph以外の)ネイティブ形式用に登録された空間プロバイダの実装が存在する場合、該当する形式の空間データをレンダリングできます。(カスタム・ジオメトリ・テーマに関連付けられる)外部空間データ・プロバイダの実装については、「カスタム・ジオメトリ・テーマ」を参照してください。

外部空間データ・プロバイダを登録するには、次の例のように<s_data_provider>要素を使用します。

<s_data_provider
  id="shapefileSDP"
  class="oracle.sdovis.ShapefileDataProvider"
  >
  <parameters>
    <parameter name="datadir" value="/temp/data" />
  </parameters>
</s_data_provider>

class属性では、外部空間データ・プロバイダを実装するクラスの名前を指定します。

<parameters>要素では、該当するデータ・プロバイダがその初期化プロセスで使用する一連の初期化パラメータを指定します。この例では、シェープファイル・プロバイダのデータ・ディレクトリ・("datadir")パラメータによって、マップ視覚化コンポーネントがデータを検索するディレクトリが示されています。

1.5.2.8 カスタムな非空間データ・プロバイダの登録

テーマ・マップ層の生成時、マップ視覚化コンポーネントは外部ソースから生成される(各地域の売上高のような)非空間属性データと、データベースに格納されているベース・ジオメトリ(全地域の境界線)を結合できます。非空間データ・プロバイダの外部属性データを使用したテーマ・マッピングについては、「外部属性データを使用したテーマ・マッピング」を参照してください。

非空間データ・プロバイダを登録するには、次の例のように<ns_data_provider>要素を使用します。

<ns_data_provider id="testProvider"
                  class="com.mycorp.GetSalesData" >
  <parameters>
    <parameter name="bi_database" value="stadb32.mycorp.com" />
    <parameter name="sid" value="bidata"  />
  </parameters>
</ns_data_provider>

id属性では、非空間データ・プロバイダを一意に指定します。このid値は、該当するプロバイダに関連するすべてのマップ・リクエストで使用します。

class属性では、非空間データ・プロバイダを実装するクラスの名前を指定します。

<parameters>要素では、非空間データ・プロバイダがその初期化プロセスで使用する一連の初期化パラメータを指定します。

1.5.2.9 SRSマッピングのカスタマイズ

<srs_mapping>要素を使用して、Oracle Spatial and Graph SDO_SRID値とEPSGコードのマッピングを定義する、SDO SRIDからEPSG SRIDへのマッピング・ファイルを指定できます。「SDO SRIDからEPSG SRIDへのマッピング・ファイル」で説明するように、指定したマッピング・ファイルの各行には、SDO_SRID値とそれに対応するEPSGコードが含まれている必要があります。<srs_mapping>要素は、WMSテーマおよびWFSテーマで使用できます。

次の例では、<srs_mapping>要素を使用してSDO SRIDからEPSG SRIDへのマッピング・ファイルを指定しています。

<srs_mapping>
  <sdo_epsg_mapfile>
    ../config/epsg_srids.properties
  </sdo_epsg_mapfile>
</srs_mapping>
1.5.2.10 WMS GetCapabilitiesレスポンスのカスタマイズ

マップ視覚化コンポーネントは、Open Geospatial Consortium Web Map Server (WMS) 1.1.1に準拠したサーバーとして使用できます。したがって、WMSクライアントは、マップ視覚化コンポーネントにGetCapabilitiesリクエストを送信できます。マップ視覚化コンポーネントはレスポンスで、保持しているテーマのリストおよびリクエスト元のクライアントにとって重要な、データ・プロバイダの名前、キーワードのリストなどの情報を返送します。

注意:

マップ視覚化コンポーネント構成ファイルの<wms_config>要素の情報よりも多くの情報を格納している個別のWMSファイル(wmsConfig.xml)があります。どのようなカスタムWMS構成パラメータも、この個別のWMS構成ファイルで定義することをお薦めします。このファイルの設定は、マップ視覚化コンポーネント構成ファイルの<wms_config>要素の設定と競合するものをすべてオーバーライドします。

wmsXonfig.xmlファイルの詳細は、「GetCapabilitiesレスポンスのカスタマイズ: 追加オプション」を参照してください。

次の例のように<wms_config>要素を使用すると、GetCapabilitiesレスポンスの一部としてクライアントに返送する説明情報をカスタマイズすることができます。

<wms_config host="www.my_corp.com" port="80"
            protocol="http" default_datasource="dsrc1"
            public_datasources="dsrc1,dsrc2">
  <title>
    WMS 1.1 interface for Oracle Application Server 10g MapViewer
  </title>
  <abstract>
    This WMS service is provided through Oracle MapViewer.
  </abstract>
  <keyword_list>
    <keyword>bird</keyword>
    <keyword>roadrunner</keyword>
    <keyword>ambush</keyword>
  </keyword_list>
  <sdo_epsg_mapfile>
    ../config/epsg_srids.properties
  </sdo_epsg_mapfile>
</wms_config>

host属性では、該当するマップ視覚化コンポーネント・サーバーに発行される今後のWMSリクエストでクライアントが使用するサービス・リクエストURLのホスト部を指定します。

port属性では、該当するマップ視覚化コンポーネント・サーバーに発行される今後のWMSリクエストでクライアントが使用するサービス・リクエストURLのポート部を指定します。

protocol属性では、該当するマップ視覚化コンポーネント・サーバーに発行される今後のWMSリクエストでクライアントが使用するサービス・リクエストURLのプロトコル部を指定します。

default_datasource属性は、機能レスポンスの取得に使用される基本データソースを指定します。この属性が定義されていない場合、データソースWMSが使用され、そのデータソースがこのマップ視覚化コンポーネント・サーバーに存在する必要があります。

public_datasources属性では、GetCapabilitiesレスポンスでどのデータソース・コンテンツをリストするかを指定します。この属性が定義されていない場合、すべてのデータソース・コンテンツがリストされます。

<title>要素では、レスポンスの一部として含めるサービス・タイトルを指定します。

<abstract>要素では、レスポンスの一部として含める概要を指定します。

<keyword_list>要素では、該当するマップ視覚化コンポーネント・サーバーによってサービスが提供される層のタイプを最もよく表現するキーワードのリストを指定します。

<sdo_epsg_mapfile>要素では、Oracle Spatial and Graph (SDO) SRID値から対応するEPSG SRID値へのマッピングを定義するテキスト・ファイル(通常はほとんどのWMSリクエストおよびレスポンスで使用される)を指定します。このマッピング・ファイルの詳細は、「SDOからEPSG SRIDへのマッピング・ファイル」を参照してください。

1.5.2.11 WMTS GetCapabilitiesレスポンスのカスタマイズ

マップ視覚化コンポーネントは、Open Geospatial Consortium WMTS (Web Map Tile Service) 1.0.0に準拠したサーバーとして使用できます。これにより、WMTSリクエストを使用して、USER_SDO_CACHED_MAPSメタデータ・ビューに定義されたタイル層を取得できます。WMTSクライアントは、マップ視覚化コンポーネントにGetCapabilitiesリクエストを送信できます。マップ視覚化コンポーネントはリクエスト元のクライアントにとって重要な、自ら保持しているタイル層のリストや、データ・プロバイダの名前、キーワードのリストなどの情報をレスポンスで返送します。mapViewerConfig.xmlと同じフォルダに格納された、wmtsConfig.xmlという名前のWMTS構成ファイルを編集すると、このようなカスタマイズされた情報を提供できます。

次の例のように、wmtsConfig.xml<wmts_config>要素を使用して、GetCapabilitiesレスポンスの一部としてクライアントに返送する説明情報をカスタマイズできます。

<wmts_config>
     <public_datasources>
        <public_datasource name="MVDEMO" include_all_tile_layers="true"/>
        <public_datasource name="ELOCATION">
          <tile_layers>
            <tile_layer name="WORLD_MAP"/>
          </tile_layers>
        </public_datasource> 
    </public_datasources>
    <sdo_epsg_mapfile>
      ../config/epsg_srid.properties
    </sdo_epsg_mapfile>
   <ServiceAttributes>              
    <ServiceIdentification> 
        <Title>Web Map Tile Service by myCorp</Title> 
        <Abstract> U.S. maps for state and county boundaries and big cities</Abstract>
        <Keywords> 
           <Keyword>Maps,U.S. State Boundaries,Cities</Keyword>
        </Keywords> 
    </ServiceIdentification>     
    <ServiceProvider> 
      <ProviderName>provider's name</ProviderName> 
        <ProviderSite url="http://www.myCorp.com/mySite"/> 
    </ServiceProvider> 
  </ServiceAttributes>
</wmts_config>

<public_datasources>要素に、<public_datasource>下位要素を含めることができます。この下位要素は、WMTS GetCapabilitiesレスポンスにリストされるタイル層のデータソースを指定します。この<public_datasources>要素が定義されていない場合は、すべてのデータ・ソースのタイル層がリストされます。また、この要素が定義されているが、<public_datasource>下位要素が含まれていない場合、データ・ソースからのタイル層はレスポンスにリストされません。

<public_datasource>要素にはname属性を含める必要があります。この属性は、データ・ソースの名前を示します。

include_all_tile_layers属性はオプションであり、デフォルトはfalseです。trueに設定すると、そのデータ・ソースのすべてのタイル層がレスポンスにリストされます。

<tile_layer>要素にはname属性を含める必要があります。この属性は、親要素に定義されたデータ・ソースからレスポンスに含めるタイル層の名前を示します。

<sdo_epsg_mapfile>要素は、Oracle Spatial and Graph (SDO) SRID値から、多くのWMTSリクエストおよびレスポンスで一般的に使用されているEPSG SRID値へのマッピングを定義するテキスト・ファイルを指定します。このマッピング・ファイルの詳細は、「SDOからEPSG SRIDへのマッピング・ファイル」を参照してください。

<Title>要素は、レスポンスの一部として含めるサービス・タイトルを指定します。

<Abstract>要素は、レスポンスの一部として含める概要を指定します。

<Keywords>要素は、マップ視覚化コンポーネント・サーバーによって処理される層のタイプを最も適切に表す一連のキーワード(<Keyword>下位要素)を指定します。

詳細は、wmtsConfig.xmlファイルのコメントを参照してください。

1.5.2.12 Oracle Maps用マップ・タイル・サーバーの構成

マップ視覚化コンポーネントのOracle Maps機能では、ベース・マップ画像タイルを事前に生成し、マップ・タイル・サーバーを使用してそれらをキャッシングすることができます。<map_tile_server>要素を使用すると、次の例のように、マップ・タイル・ファイルのデフォルトの格納先やログ情報などの構成情報をマップ・タイル・サーバーに提供できます。

<map_tile_server>
   <tile_storage default_root_path="/scratch/tilecache/" />
   <logging log_level="finest" log_thread_name="false" log_time="true">
      <log_output name="System.err"/>
   </logging>
</map_tile_server>

<tile_storage>要素では、該当するマップ視覚化コンポーネント・サーバーによって生成されるすべてのマップ画像タイルが格納されるデフォルトのルート・ディレクトリを指定します。

<logging>要素では、マップ・タイル・サーバーに固有なログ情報を指定します。

1.5.2.13 永続mapデータソースの定義

すべてのマップ・リクエストには、地理空間データを持つデータベース・ユーザーである、マップ・データソースを指定するデータソース属性が必要です。使用可能なマップ・データソースを事前定義するには、<map_data_source>要素を使用します。次に例を示します。

<map_data_source name="mvdemo"
                 jdbc_host="mapsrus.example.com"
                 jdbc_sid="orcl"
                 jdbc_port="1521"
                 jdbc_user="scott"
                 jdbc_password="!password"
                 jdbc_mode="thin"
                 number_of_mappers="5"
                 allow_jdbc_theme_based_foi="true"
                 plsql_package="web_user_info"
/>

<map_data_source>要素の属性として、次の情報を指定できます。

  • name属性では、マップ視覚化コンポーネントに対して一意のデータソース名を指定します。データソースを識別するすべてのマップ・リクエストで、データソース名を指定する必要があります。

  • 必要なすべての接続情報、コンテナ・データソース名またはネット・サービス名(TNS名)のいずれかを指定する必要があります。つまり、jdbc_hostjdbc_sidjdbc_portjdbc_user、またはcontainer_ds、またはjdbc_tns_nameのうちどれか1つのみを指定する必要があります(いずれもこの項で説明します)。

    データソースを定義したデータベースを再起動して、そのデータソースがjdbc_host/jdbc_sid/jdbc_port属性またはjdbc_tns_name属性から作成される場合、データベースがオンラインに戻り次第、マップ視覚化コンポーネントは通常の動作(たとえば、マップ・リクエストに正しく作成されたマップで応答するなど)を再開します。

  • jdbc_hostjdbc_sidjdbc_portおよびjdbc_user属性では、データベース接続情報およびデータベース・ユーザー名を指定します。(これらの属性と、jdbc_password属性およびjdbc_mode属性を指定するかわりに、この項で後述するように、container_ds属性を指定することもできます。)

  • jdbc_password属性では、データベース・ユーザーのログイン・パスワードを指定します。初めてパスワードを指定する場合は、先頭に感嘆符(!)を付ける必要があります。次のマップ視覚化コンポーネントの再起動時に、クリア・テキスト・パスワードは自動的に不明瞭化され、置き換えられます。

    マップ視覚化コンポーネントによってこのパスワード文字列が変更されることはありません。大文字または小文字の変換も行われません。データベースで大/小文字を区別したパスワードが使用される場合は、指定したパスワードがデータベースのパスワードと完全に一致する必要があります。

  • jdbc_mode属性では、データベースに接続する際に使用するOracle JDBCドライバがマップ視覚化コンポーネントに通知されます。デフォルトはthin(シン・ドライバ)です。その他の可能な値はoci8です。この場合、マップ視覚化コンポーネントが動作するホスト上にOracle Databaseクライアントもインストールされている必要があります。

  • container_ds属性を使用すると、Java EEコンテナの名前(JNDI名)を指定できます。これは、jdbc_hostjdbc_sidjdbc_portjdbc_userjdbc_password、およびjdbc_modeの各属性を指定するかわりになります。たとえば、JDBCデータソースを作成し、そのデータソースにjdbc/OracleDSというJNDI名を付けたとします。その後、永続マップ視覚化コンポーネント・データソースを次のように定義できます。

    <map_data_source name="mvdemo"
                     container_ds="jdbc/OracleDS"
                     number_of_mappers="5"
    />
    

    container_ds属性を使用し、データソースを定義したデータベースの再起動後すぐにマップ視覚化コンポーネントが通常の動作(たとえば、マップ・リクエストに正しく作成されたマップで応答するなど)を自動的に再開するようにする場合は、アプリケーションに戻される前に必ず接続を検証するように、コンテナ・データソースに指示する必要があります。

  • jdbc_tns_name属性では、tnsnames.oraファイルで定義されているネット・サービス名を識別します。

  • number_of_mappers属性では、このデータソースで使用可能なマップ・レンダラの最大数(つまり、このデータソースでマップ視覚化コンポーネントが同時に処理できるマップ・リクエストの最大数)を指定します。未処理のマップ・リクエストはキューに入れられ、最終的には処理されます。たとえば、この値が3の場合、マップ視覚化コンポーネントでは最大3つのマップ・リクエストを同時に処理できます。3つのリクエストの処理中に送信された4つ目のマップ・リクエストは、マップ視覚化コンポーネントが現在のリクエストのいずれかの処理を完了するまで待機します。

    number_of_mappersに大きな値(50、100など)を指定すると、全体的なスループットを向上できますが、マップ視覚化コンポーネントがより多くの同時マップ・リクエストを処理しようとするため、ピーク負荷時のランタイム・メモリーとCPU使用率も増加させることになります。これは、アクティブなデータベース・セッションの数も増加させます。したがって、この属性にあまり大きな数値を設定しないようにしてください。

    注意:

    廃止されるmax_connections属性は、レンダリングに影響を与えなくなり、無視されます。number_of_mappers属性の値は、データソースに対して常にオープンになっているデータベース接続またはセッションの実際の最大数に影響を与えます。

  • allow_jdbc_theme_based_foi属性を使用すると、該当するデータソースに対するJDBCテーマベースのFOIリクエストの実行を許可するかどうかを指定できます。JDBCテーマベースのFOIリクエストは、JavaScriptクライアント・アプリケーションによって作成された動的SQL問合せに基づくものです。

    デフォルトでは、そのようなFOIリクエストは、この属性をtrueに設定しないかぎり、許可されません。セキュリティ侵害のおそれがあるため、JDBCテーマベースのFOIリクエストは注意して使用する必要があります。JDBCテーマベースのFOIリクエストは、非常に低い権限しか付与されず、公開対象のデータしか含まれないデータベース上でのみ許可してください。

  • plsql_package属性では、セキュアなマップ・レンダリング用に使用するPL/SQLパッケージを指定できます(「セキュアなマップ・レンダリング」を参照)。

  • web_user_type属性(この項の例には表示されていません)を使用すると、認証済ユーザー名のソースを指定できます。これは、セキュアなソース・レンダリングで使用するPL/SQLパッケージの指定とあわせてCookieから認証済ユーザー名を取得する場合に特に有効です。web_user_type属性および使用例の詳細は、Cookieからのユーザー名の取得を参照してください。

1.5.2.14 HTML5 API用のマップ・データ・サーバーの構成および保護

マップ視覚化コンポーネントでは、デフォルトでテーマをストリーミングできるようになっています。これらのテーマを保護するには、認証の追加が必要です。これを行うには、マップ視覚化コンポーネントのweb.xmlファイルにセキュリティ制約を追加し、構成ファイルの<mds_config>要素を構成して、テーマへのアクセスを認可します。

マップ・データ・サーバー(MDS)サーバー・コンポーネントにより、Oracle Maps APIへのベクトル形式の地理空間データのストリーミングが容易になります(「Oracle Maps JavaScript API」を参照)。MDSは、ブラウザ・クライアントがマップ視覚化コンポーネント・サーバー・インスタンスから任意の事前定義済または動的(JDBC)テーマのベクトル・データをリクエストするためのRESTful APIを提供します。このサービスへのアクセスをセキュアまたは保護するための唯一の方法は、マップ視覚化コンポーネントweb.xmlデプロイメント・ファイルにセキュリティ制約を追加することです。次に例を示します。

<security-constraint>
<web-resource-collection>
. . .
<url-pattern>/dataserver/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>map_admin_role</role-name>
</auth-constraint>
</security-constraint>

この例は、相対パス/dataserver/を持つすべての受信URLにセキュリティ制約を追加します。MDSサーブレットは、パスに/dataserverが含まれているURLのみに応答するため、この制約はMDSへのすべてのアクセスを効果的に保護します。したがって、マップ・データ・サーバーにアクセスするすべてのアプリケーションまたはWebクライアントが適切な認証を要求され、map_admin_roleロールを持つユーザーのみがアクセスを許可されます。(MDSなどのJava EEサーブレットを保護する方法の詳細は、Java EEおよびWebLogic Serverのドキュメントを参照してください。)

MDS URLパターンにセキュリティ制約を追加したかどうかにかかわらず、すべての事前定義済または動的(JDBC)テーマのベクトル・データへのアクセスはデフォルトでブロックされます。つまり、たとえば/dataserver/*のURLが保護されており、HTML5アプリケーションが認証に成功した場合でも、適切な認可がないテーマのデータにアクセスできません。Oracle Maps HTML5アプリケーションが適切な認可のないテーマのロードまたは表示を試みると、「このデータソースはストリーミング・アクセスが許可されていません。」という内容を含む一般的なエラー・メッセージが表示されます。

データソースのテーマへのアクセスを許可するには、構成ファイルで明示的に<mds_config>要素を構成する必要があります。

例1-2 mds.xmlファイルの構成

例1-2<mds_config>要素を示します。ここでは、2つのマップ視覚化コンポーネント・データソース、mvdemomy-dataが特定のテーマをクライアントにストリームできるように構成されています。

<mds_config>
 
<data_source name="mvdemo">
<allow_predefined_themes>true</allow_predefined_themes>
<deny>my_secret_theme</deny>
<allow_dynamic_themes>true</allow_dynamic_themes>
</data_source>
 
<data_source name="my-data">
<allow_predefined_themes>false</allow_predefined_themes>
<allow>
<theme>public_points_theme</theme>
<theme>office_locations*</theme>
</allow>
<allow_dynamic_themes>false</allow_dynamic_themes>
</data_source>
 
</mds_config>

例1-2では、次のようになります。

  • 各データソースは、独自の<data_source>要素内でそれぞれのテーマを認可します。この要素では、2つのタグ、<allow_predefined_themes>および<allow_dynamic_themes>が、この2つのテーマ・タイプへの全体的またはデフォルトのアクセス制御を提供します。動的(JDBC)テーマは、データソース定義内(メインmapViewerConfig.xmlファイル)で無効にすることもできます。動的テーマがデータソース定義で無効になっている場合、その設定が常に優先されます(どのように、<mds_config>要素に設定されているかは関係ありません)。

  • mvdemoデータソースでは、デフォルトですべてのクライアントが事前定義済テーマおよび動的(JDBC)テーマのベクトル・データにアクセスできます。これはデータの特性を考えると(一般公開されたサンプルからのデータ)、妥当な選択です。ただし、my_secret_themeテーマには<deny>タグが使用されており、例外になっています。

  • my-dataデータソースでは、両方のテーマ・タイプへのアクセスがデフォルトでブロックされています。この場合は、<allow>タグを使用して例外を追加します(ストリーミングのために特定のテーマを開く)。<allow>タグおよび<deny>タグでは、テーマの名前またはパターンは大文字と小文字が区別されません。また、ワイルド・カード文字*(アスタリスク)を使用して複数のテーマに一致させることができます。この例では<allow>タグを使用して、public_points_themeテーマおよび名前がoffice_locationsで始まるすべてのテーマをストリーミングのために開放していますが、他のすべてのテーマはブロックされています。このデータソースでは、動的(SQL)テーマは許可されません。

<mds_config>要素を変更した場合は、デプロイされたマップ視覚化コンポーネント・インスタンスを再起動して、変更を有効にする必要があります。

1.5.3 マップ・ビジュアライザの管理タスクの実行

マップ・ビジュアライザの構成方法の理解に加え、マップ・ビジュアライザの管理ページを使用して他の重要な管理タスクを実行する方法を理解する必要があります。このページへのログイン方法については、「マップ視覚化コンポーネントの「管理」ページへのログイン」を参照してください。

マップ・ビジュアライザ管理者として実行できるタスクには、次のようなものがあります。

  • 構成ファイルの編集

    「構成」をクリックします。

  • データソースのリストのリフレッシュ

    「管理」をクリックしてリストを自動的にリフレッシュするか、「リフレッシュ」をクリックして手動リフレッシュを実行します。

  • マップ・ビジュアライザのスタイル、テーマ、およびベース・マップのキャッシングされた定義の消去

    「管理」をクリックし、データソースを選択して、「キャッシュされたメタデータのパージ」をクリックします。

  • 事前定義済テーマからのキャッシュされたジオメトリ・データの消去

    「管理」をクリックし、「ジオメトリ・キャッシュ」をクリックして、選択したテーマまたはすべてのテーマの「パージ」をクリックします。

  • Oracle Mapsのマップ・タイル層の作成

    「管理」「タイル・レイヤーの作成」の順にクリックし、タイル層のタイプを選択して、「次」をクリックします。

    「Internal」マップ・ソース: マップ・キャッシュ名を入力した後、データソースとベース・マップを選択します。また、キャッシュ記憶域(タイルの格納先)、ズーム・レベル、最小および最大スケール、空間参照ID (SRID)、データ枠ボックス(MBR)、およびタイルのサイズと形式のパラメータも定義します。「次」をクリックし、「送信」をクリックして、マップ・タイル層を作成します。また、「XML」をクリックし、XMLでマップ・キャッシュ・プロパティを定義することもできます。

    「External」マップ・ソース: マップ・キャッシュ名を入力した後、データソースを選択します。外部ソースにアクセスするには、マップ・サービスURL、リクエスト・メソッド(GETまたはPOST)、プロキシ情報(必要な場合)、サーバー上のJavaアダプタ・クラス名とその位置、アダプタのその他のプロパティなどのパラメータを定義します。また、キャッシュ記憶域(タイルの格納先)、ズーム・レベル、最小および最大スケール、空間参照ID (SRID)、データ枠ボックス(MBR)、およびタイルのサイズと形式のパラメータも定義します。「次」をクリックし、「送信」をクリックして、マップ・タイル層を作成します。また、「XML」をクリックし、XMLでマップ・キャッシュ・プロパティを定義することもできます。

    その他のタイプのタイル層(Oracle Maps、Here、Google、TomTom)についても、同様の手順を実行してください。

  • Oracle Mapsのマップ・タイル層の管理

    「管理」をクリックして、「タイル・レイヤーの管理」をクリックします。その後、次のいずれかの操作を実行します。

    タイル層のリストを手動でリフレッシュする場合は、「リフレッシュ」をクリックします。

    マップ・タイル層を編集するには、その層の行を選択して、「詳細の編集/表示」をクリックします。

    マップ・タイル層を表示および管理するには、その層の行を選択して、「マップの表示/タイルの管理」をクリックします。

1.6 Oracle Real Application Clustersおよびマップ・ビジュアライザ

データベースがOracle Real Application Cluster (Oracle RAC)である場合、次のいずれかのオプションを使用してOracle RACデータベースに接続できます。

  • WebLogic Server 12cなどのJava EEコンテナのデータソースを介してマップ・ビジュアライザがデータベースに接続するようにします。

    対象のOracle RACデータベースに接続するJDBCデータソースを作成します(「マップ・ビジュアライザ・サーバーのOracle RACコンテナ・データソースの作成」を参照)。このデータソースは、JNDIルックアップを利用してマップ・ビジュアライザおよびその他のアプリケーションで使用できます。

    このオプションは、管理者がこれらの種類の接続を作成および監視するサイト、または接続が複数のアプリケーションによって使用されるサイトでよく使用されます。また、このオプションでは、データベース接続の詳細(データベースのユーザー名やパスワードなど)がアプリケーションで非表示になります。

  • マップ・ビジュアライザが直接にデータベース・サービスに接続できるようにします。

    データベースSIDではなく、Oracle RACサービス名を使用してマップ・ビジュアライザ・データソースを直接に定義します(「Oracle RACサービス名によるマップ・ビジュアライザ・データソースの作成」を参照)。

    このオプションは、前述のオプションよりも実装が簡単です。

このオプションのいずれかを実行した後、マップ・ビジュアライザを再起動します(「マップ・ビジュアライザの再起動」を参照)。

1.6.1 マップ・ビジュアライザ・サーバーのOracle RACコンテナ・データソースの作成

Oracle RACマップ・ビジュアライザ・コンテナにJDBCデータソースを作成し、マップ・ビジュアライザ構成ファイルでそのコンテナ・データソースを使用できます。その手順は次のとおりです。

  1. Oracle RACコンテナ・データソースの作成

  2. コンテナ・データソースによるマップ・ビジュアライザ・データソースの作成

1.6.1.1 Oracle RACコンテナ・データソースの作成

Oracle Enterprise Manager 12c以降を使用して、Oracle RACデータベースに接続するデータソースを作成できます。

次の手順に、GridLinkデータソースの作成方法を示します。(この手順の後にマルチ・データソースの作成方法を示します。)

  1. Enterprise Managerにログインし、「ターゲット・ナビゲーション」ペインで、マップ・ビジュアライザ・サーバーが含まれているサーバー・インスタンスをクリックします。

    図1-2で、「WebLogicドメイン」下の「map_viewer1」をクリックすると、ウィンドウのメイン領域にmap_viewer1のサーバー情報が表示されます。

    図1-2 サーバー・インスタンスの選択

    図1-2の説明が続きます。
    「図1-2 サーバー・インスタンスの選択」の説明
  2. 図1-3に示すように、「WebLogic Server」をクリックし、「JDBCデータソース」を選択します。

    図1-3 JDBCデータソースの表示

    図1-3の説明が続きます
    「図1-3 JDBCデータソースの表示」の説明
  3. 図1-4に示すように、「JDBCデータソース」で「作成」をクリックして「GridLinkデータ・ソース」を選択します。

    図1-4 GridLinkデータソースの作成

    図1-4の説明が続きます
    「図1-4 GridLinkデータソースの作成」の説明
  4. 新規JDBCデータソースの作成ウィザードで、必要な情報を入力します。たとえば、jdbc/mvdemoというコンテナ・データソースを作成する場合は次のとおりです。

    1. データソース・プロパティ:データソース名にはmvdemoドライバ・サービス名にはOracle Driver (Thin XA) for GridLink Connections Versions: AnyJNDI名にはjdbc/mvdemoと指定します。

    2. 接続プロパティ:適切なホストにデータベース・ユーザーmvdemoのURLを生成します。

    3. トランザクション・プロパティ:表示されたトランザクション・プロパティを受け入れます。

    4. ONSプロパティ:表示されたトランザクション・プロパティを受け入れるか、必要に応じて変更します。

    5. ターゲットの選択:「名前」の下のmap_viewer1 を選択して目的のサーバーにJDBCデータソースをデプロイします。

    6. 確認:新規に作成するデータソースのプロパティを確認します。変更する必要がある場合は、戻って変更を加えてからこのページに戻ります。

前述の手順のようなGridLinkデータソースではなく、マルチ・データソースを作成するには、必要に応じて手順を変えてください。次に例を示します。

  1. Enterprise Managerにログインし、「ターゲット・ナビゲーション」ペインで、マップ・ビジュアライザ・サーバーが含まれているサーバー・インスタンスをクリックします。

    図1-5で、「WebLogicドメイン」下の「map_viewer1」をクリックすると、ウィンドウのメイン領域にmap_viewer1のサーバー情報が表示されます。

    図1-5 サーバー・インスタンスの選択

    図1-5の説明が続きます
    「図1-5 サーバー・インスタンスの選択」の説明
  2. 図1-6に示すように、「WebLogic Server」をクリックし、「JDBCデータソース」を選択します。

    図1-6 JDBCデータソースの表示

    図1-6の説明が続きます
    「図1-6 JDBCデータソースの表示」の説明
  3. 図1-7に示すように、「JDBCデータソース」で「作成」をクリックして「マルチ・データソース」を選択します。

    図1-7 マルチ・データソースの作成

    図1-7の説明が続きます。
    「図1-7 マルチ・データソースの作成」の説明
  4. 必要な情報を入力します。次に例を示します。

    1. データソース・プロパティ:データソース名にはmvdemoJNDI名にはjdbc/mvdemoアルゴリズム・タイプにはFailoverと指定します。

    2. ターゲットの選択:「名前」の下のmap_viewer1 を選択します。

    3. データソース・タイプの選択:デフォルト値を受け入れます(non-XA Driver)。

    4. 「新しいデータ・ソースの作成」をクリックします。

    5. 最初のデータソース・ノードのプロパティを指定します。例:名前mvdemo-rac0JNDI名jdbc/mvdemo-rac0データベース・タイプOracle

    6. データベース・ドライバには、Oracle's Driver (Thin) for Oracle RAC Service-Instance connections: Versions: Anyを選択します。

    7. デフォルト値を受け入れます(Supports Global TransactionsおよびOne-Phase Commit)。

    8. ノード1の接続プロパティを定義します。サービス名、データベース名、ホスト名、ポート、データベース・ユーザー名、パスワードおよびプロトコルの値を入力します。

    9. プロパティを確認し、「構成のテスト」をクリックします。成功した場合は、「次へ」をクリックします。

    10. マップ・ビジュアライザのデプロイ先サーバー(map_viewer1)を選択し、「終了」をクリックします。

    11. 次のページで、「新しいデータ・ソースの作成」をクリックして2番目のノードを作成および構成します。

    12. 2番目のデータソース・ノードのプロパティを指定します。例:名前mvdemo-rac1JNDI名jdbc/mvdemo-rac1データベース・タイプOracle

    13. データベース・ドライバには、Oracle's Driver (Thin) for Oracle RAC Service-Instance connections: Versions: Anyを選択します。

    14. デフォルト値を受け入れます(Supports Global TransactionsおよびOne-Phase Commit)。

    15. ノード2の接続プロパティを定義します。サービス名、データベース名、ホスト名、ポート、データベース・ユーザー名、パスワードおよびプロトコルの値を入力します。

    16. プロパティを確認し、「構成のテスト」をクリックします。成功した場合は、「次へ」をクリックします。

    17. マップ・ビジュアライザのデプロイ先サーバー(map_viewer1)を選択し、「終了」をクリックします。

    18. ノードの追加が必要な場合は、「新しいデータ・ソースの作成」をクリックして、前述のような方法で各ノードを作成します。

1.6.1.2 コンテナ・データソースによるマップ・ビジュアライザ・データソースの作成

マップ・ビジュアライザ・コンテナのコンテナ・データソースを作成した後(「Oracle RACコンテナ・データソースの作成」を参照)、マップ・ビジュアライザ・データソースにcontainer_ds属性を追加して、Oracle RACデータベースへの接続が可能な新しいマップ・ビジュアライザ・データソースを作成します。次に例を示します。

<map_data_source  name="mvdemo"
                  container_ds="jdbc/mvdemo"
                  number_of_mappers="7" />

前述の例は、次のとおりです。

  • name属性は、マップ・ビジュアライザ・データソース名を指定します。これはマップ・リクエストのために必要です。

  • container_ds属性の値は、新規JDBCデータソースの作成ウィザードの「データソース・プロパティ」ページで指定した「JNDI名」と一致している必要があります。

  • number_of_mappers属性では、このデータソースをターゲットにできる、サポートされる同時マップ・リクエストの最大数を指定します。

これらの属性の詳細は、「永続マップ・データソースの定義」を参照してください。

1.6.2 Oracle RACサービス名によるマップ・ビジュアライザ・データソースの作成

マップ・ビジュアライザ構成ファイル内のcontainer_ds属性で使用するJDBCコンテナ・データソースを作成するかわりに(「マップ・ビジュアライザ・サーバーのOracle RACコンテナ・データソースの作成」を参照)、Oracle RACデータ・サービスへの接続パラメータを指定して、マップ・ビジュアライザ構成ファイルにマップ・ビジュアライザ・データソースを直接作成できます。(この接続タイプは、Oracle Databaseリリース11.2以上でのみ使用できます。)次に例を示します。

    <map_data_source name="mvdemo"
         jdbc_host="rac.mycompany.com"
         jdbc_sid="//srv.mycompany.com"
         jdbc_port="1521"
         jdbc_user="mvdemo"
         jdbc_password="!mypassword" 
         jdbc_mode="thin"
         number_of_mappers="8"
         allow_jdbc_theme_based_foi="true"
         editable="false"
    />

前述の例は、次のとおりです。

  • jdbc_host属性は、Oracle RAC SCAN IPアドレスまたはホスト名である必要があります。

  • jdbc_sid属性は、SID値ではなく、Oracle RACデータベース・サービス名を指定します(jdbc_sid="//srv.mycompany.com"の先行の//文字に注意)。

この例の属性の詳細は、「永続マップ・データソースの定義」を参照してください。

1.6.3 マップ・ビジュアライザの再起動

「マップ・ビジュアライザ・サーバーのOracle RACコンテナ・データソースの作成」または「Oracle RACサービス名によるマップ・ビジュアライザ・データソースの作成」の手順を実行した後、マップ・ビジュアライザを再起動して新規に作成したデータソースを有効にする必要があります。

マップ・ビジュアライザの再起動の後、データソースからのマップをリクエストすると、マップ・ビジュアライザが必要なデータベース接続を取得します(「マップ・ビジュアライザ・サーバーのOracle RACコンテナ・データソースの作成」のオプションを選択した場合はコンテナから取得、「Oracle RACサービス名によるマップ・ビジュアライザ・データソースの作成」のオプションを選択した場合は直接に接続パラメータから取得)。

1.7 高可用性およびマップ・ビジュアライザ(WebLogic Serverのみ)

ユーザーは、Oracle WebLogic Serverの高可用性機能のメリットを享受できます。

注意:

この項は、マップ・ビジュアライザの高可用性機能をフルに利用する上級ユーザーを対象としています。ユーザーには高可用性機能についての十分な理解が必要です。高可用性機能については、『Oracle Fusion Middleware高可用性ガイド』を参照してください。

1.7.1 中間層クラスタでのマップ・ビジュアライザのデプロイ

マップ・ビジュアライザは、WebLogic Serverクラスタにデプロイできます。ただし、各ホストで生成された画像ファイルの命名方法およびクライアント・アプリケーションによるURLでの参照方法には注意する必要があります。

次の例を検討します。マップ・リクエストが、フロントWebサーバーに送信されると、ホストAで実行されているマップ・ビジュアライザに到達します。次に、ホストAのマップ・ビジュアライザが、生成されたマップ画像のURLを返し、その後、クライアントが実際の画像をフェッチするために2番目のリクエストを送信します。この2番目のリクエストはホストBで稼働しているWebLogic Serverで受信されますが、このWebLogic Serverにはそのような画像がありません(あるいは、同じ名前の間違った画像が返されます)。

どのような環境でも、この問題に対する最善の解決策はありません。1つの選択肢として、異なるホストで稼働する異なるマップ・ビジュアライザ・サーバーによってマップ画像が同一の仮想(ネットワーク化された)ファイル・システムに置かれるように、ホストで共通のネットワーク・ストレージを共有する方法があります。画像を異なるサブディレクトリに置いたり、画像に異なるファイル接頭辞を付けたりするため、マップ・ビジュアライザ・インスタンスごとに、マップ・ファイル・ストレージ情報(「マップ・ファイル格納情報およびライフ・サイクル情報の指定」を参照)を構成する必要があります。情報を構成しない場合、複数のマップ・ビジュアライザ・サーバーによって生成された画像ファイルが、ディスク上で互いを上書きする可能性があります。マップ・ファイル・ストレージ情報を適切に構成すると、クライアントに返された各URLにより、ネットワーク・ドライブ上で確実に正しいマップが一意に識別されます。

ネットワーク・ドライブを使用できない場合は、ロード・バランサの使用を検討してください。各マップ・ビジュアライザ・インスタンスで、確実に一意性を保つための適切な方法を使用して、生成された画像ファイルに名前を付けるため、まずマップ・ビジュアライザ・インスタンスごとに、マップ・ファイル・ストレージ情報を構成する必要があります(前のパラグラフを参照)。これで、URLがあるパターン(指定したマップ画像ファイル接頭辞を含むなど)に一致する場合に画像リクエストを特定のホストにリダイレクトするルールを、ロード・バランサで指定できます。

1.8 セキュアなマップ・レンダリング

Webユーザーの識別情報に基づいてセキュアなマップ・レンダリングを実装できます。

同じテーマを表示するときでも、ユーザー各自のロールや権限に応じて、表示される地物のセットを変えることができます。基本的な考え方は、Webユーザーがテーマを利用するためにデータベースにアクセスする場合、マップ・ビジュアライザでは常に特定のPL/SQLパッケージを起動してそのユーザーの識別情報をデータベース内に設定するというものです。このユーザー情報は、データ・アクセス制御を行うためにデータベースで使用されます。

注意:

この項では、「ユーザー」および「認証済ユーザー」という用語は、Oracle Fusion MiddlewareまたはOracle Single Sign-On (SSO)にログインするアプリケーションまたはWebユーザーを意味します。これは、データベース・ユーザーと同じではありません。マップ・ビジュアライザ自体が、すべての地理空間データが格納されているデータベース・スキーマに直接接続します。

マップ・ビジュアライザは、すべての地理空間データが格納されているデータベース・スキーマに直接接続します。このスキーマ内のデータについて、マップ・ビジュアライザのアクセス制御を実施するには、次の手順を実行する必要があります。

  1. データベース・スキーマにPL/SQLパッケージを作成します。このパッケージには、少なくともset_user(username)およびclear_user()という2つのプロシージャを含める必要があります。

  2. PL/SQLパッケージに格納されるユーザー識別情報に基づき(この情報は、データベース・セッションごとにset_userプロシージャを使用してマップ・ビジュアライザによって設定されます)、ビューの作成、データベース・オブジェクトに対するアクセス権の設定、およびその他のタスクを実行します。

  3. スキーマに対するマップ・ビジュアライザ・データソースを作成し、データソース定義の一部としてPL/SQLパッケージの名前を指定します。これがセキュアなデータソースとみなされます。

  4. ステップ2で作成したビューを基にしてマップ・ビジュアライザ・テーマを作成します。

  5. マップ・ビジュアライザ・アプリケーションのページにアクセスするユーザー用のWeb認証を設定し、マップ・リクエストがマップ・ビジュアライザ・サーブレットに届いたときに、Webセッション・オブジェクトに認証済ユーザーの識別情報が含まれるようにします。

  6. ステップ4で定義したテーマを表示するマップ・リクエストまたはFOI(対象地物)リクエストを、直接発行するか、またはベース・マップとOracle Mapsを使用して発行します。

    マップ・ビジュアライザでは、PL/SQLパッケージを使用してユーザー識別情報をデータベースに自動的に渡した後、これらのテーマに関する問合せを実行します。識別されたユーザーに対して表示可能な行のみがデータベースから返されて、マップ・ビジュアライザによってレンダリングされます。

「セキュアなマップ・レンダリングが機能する仕組み」では、セキュアなマップ・レンダリングが機能する仕組みについて説明し、実装の詳細といくつかの例を紹介します。「ユーザー認証: オプションとデモ」では、ユーザー認証のオプションおよび付属のデモについて説明します。

1.8.1 セキュアなマップ・レンダリングが機能する仕組み

マップ・ビジュアライザは、Java EEアプリケーションとして、Oracle Fusion MiddlewareまたはOracle Single Sign-On (SSO)で認証済であるWebユーザーの識別情報を取得できます。このユーザー情報はデータベースに送ったり保存したりできます。データベースでは、このユーザー識別情報に基づいて、マップ層や表へのセキュア・アクセスを設定できます。たとえば、データベース管理者(DBA)は、特定のユーザーに対して表示できる空間地物のみを選択する実表のビューを作成することが可能です。

Oracle Fusion MiddlewareまたはOracle Single Sign-On (SSO)からデータベースにWebユーザーの識別情報を渡すには、データベースにユーザー識別情報を設定するセキュアなPL/SQLパッケージを使用します。このPL/SQLパッケージは、DBAまたはアプリケーション開発者が作成し、データソース・スキーマにインストールします。このようなパッケージには、プロシージャやファンクションをいくつ含めてもかまいませんが、少なくとも次の2つのプロシージャは必ず含める必要があります。

  • set_user(username)

  • clear_user()

セキュアなデータソースからテーマがリクエストされると、マップ・ビジュアライザでは、関連するPL/SQLパッケージのset_userプロシージャを起動した後でそのテーマに対するデータの問合せを実行します。テーマに対する問合せプロセスが完了すると、マップ・ビジュアライザはclear_userプロシージャを起動します。

PL/SQLパッケージをインストールしたら、データソース定義の一部として、plsql_package属性を使用してこのパッケージの名前をマップ・ビジュアライザに渡すことができます(例1-5を参照)。

データソース定義にPL/SQLパッケージ名を指定すると、マップ・ビジュアライザは該当するデータソースをセキュアなデータソースとしてフラグ付けし、このデータソースでテーマの問合せを実行するときは常に、パッケージのset_userプロシージャおよびclear_userプロシージャを自動的に起動します。

例1-3 セキュアなマップ・レンダリング用のPL/SQLパッケージ

例1-3に、セキュアなマップ・レンダリング用として使用できるPL/SQLパッケージを示します。このパッケージは、MVDEMOサンプル・スキーマで作成できます。

例1-3では、set_userとclear_userが必須の2つのメソッドで、get_userは、ビューを作成したり他のデータ・アクセスを制御したりするために使用できる便宜的なファンクションです。

このパッケージ(基本的に現行のデータベース・セッションに対するユーザー識別情報を含む)を作成した後、このユーザー情報を使用する複雑な仮想プライベート・データベースを設定できます(Oracle Virtual Private DatabaseまたはVPDの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照)。ただし、わかりやすくするため、この項ではVPDの作成については扱わず、このユーザー情報を使用してデータ・アクセス制御を行うビューを作成できることのみを示します。

たとえば、MVDEMOサンプル・スキーマ内の既存のCUSTOMERS表にACCOUNT_MGRという列を追加して、この表に格納されている各顧客にアカウント・マネージャを割り当てることができます。次に、特定のアカウント・マネージャに対して顧客の行のみを返すビューを作成します(例1-4を参照)。

CREATE OR REPLACE PACKAGE web_user_info
AS
    PROCEDURE set_user (p_name IN VARCHAR2);
    PROCEDURE clear_user;
    FUNCTION  get_user
        RETURN VARCHAR2;
END;
CREATE OR REPLACE PACKAGE BODY web_user_info
AS
    w_name VARCHAR2 (32767);
 
  PROCEDURE set_user (p_name IN VARCHAR2)
  AS
  BEGIN
     w_name := LOWER (p_name);
  END;
 
  PROCEDURE clear_user
  AS
  BEGIN
      w_name := null;
  END;
 
  FUNCTION get_user
    RETURN VARCHAR2
  AS
  BEGIN
    RETURN w_name;
  END;
END;
/

例1-4 セキュアなマップ・レンダリング用のビュー

CREATE OR REPLACE VIEW customers_view
AS
  SELECT * FROM customers
  WHERE account_mgr = web_user_info.get_user;

このビューを基にして、アカウント・マネージャがログインして顧客データをマップ上に表示する場合に、各自の担当する顧客しか表示されないようなマップ・ビジュアライザ・テーマを定義することが可能になります。

例1-5 セキュアなマップ・レンダリング用のデータソース定義

<map_data_source name="mvdemo"
                 jdbc_host="system32.example.com"
                 jdbc_sid="mv"
                 jdbc_port="15214"
                 jdbc_user="mvdemo"
                 jdbc_password="password"
                 jdbc_mode="thin"
                 number_of_mappers="3"
                 allow_jdbc_theme_based_foi="true"
                 plsql_package="web_user_info"
   />

1.8.2 Cookieからのユーザー名の取得

認証済ユーザー情報は、Java EEやOSSOのセッションからマップ・ビジュアライザに渡されない場合があります。マップ・ビジュアライザをApplication Express (APEX)内に統合したときなどがそうですが、この場合、認証がAPEXにより行われるため、Java EEやOSSOのセッションからユーザー名を取得できません。この問題を回避するため、マップ・ビジュアライザではCookieからのユーザー名の取得もサポートしています。認証済ユーザー名を保持するためのAPEX内のCookieの設定は、各自の責任において行ってください。

指定したCookieからマップ・ビジュアライザがユーザー名を確実に取得するようにするには、データソース定義にweb_user_type属性を(必須のplsql_package属性に加えて)指定する必要があります。たとえば、マップ・ビジュアライザでMON_USERという名前のCookieからユーザー名を取得する場合は、セキュアなデータソース定義は例1-6のようになります。

例1-6 Cookie名を指定するデータソース定義

<map_data_source name="mvdemo"
                  jdbc_host="system32.example.com"
                  jdbc_sid="mv"
                  jdbc_port="25650"
                  jdbc_user="mvdemo"
                  jdbc_password="LfCDQ6NH59nuV7zbeY5QY06sqN7XhiUQ"
                  jdbc_mode="thin"
                  number_of_mappers="3"
                  allow_jdbc_theme_based_foi="true"
                  plsql_package="web_user_info"
                  web_user_type="MON_USER"
  />

web_user_type属性に使用できる値は次のとおりです。

  • J2EE_USER: Java EEセッションから認証済ユーザー名を取得するようマップ・ビジュアライザに指示します

  • OSSO_USER: OSSOセッションから認証済ユーザー名を取得するようマップ・ビジュアライザに指示します。

  • <cookie-name>: 指定した名前のCookieから認証済ユーザー名を取得するようマップ・ビジュアライザに指示します。Cookie名は大/小文字が区別されません。

web_user_type属性が指定されていない場合、マップ・ビジュアライザではユーザー名をまずJava EEセッションで検索し、見つからない場合はOSSOセッションで検索します(存在する場合)。

1.8.3 ユーザー認証: オプションとデモ

ユーザーをいつ、どこで、どのように認証するかは、アプリケーションの要件やインストールのセットアップに応じて異なります。たとえば、次のようなオプションがあります。

  • マップ・ビジュアライザをエンタープライズ・ポータル・サイトの一部としてデプロイし、エンド・ユーザーがマップ・ビジュアライザを利用してマッピング機能を実行する前に、最初に必ずこのポータルにログインするようにします。

  • マップ・ビジュアライザを別のシステムにデプロイし、中央のOracle SSOサーバーでユーザーを認証するようにします。

マップ・ビジュアライザに到達するHTTPリクエストに、認証済ユーザー情報が含まれている限り、マップ・ビジュアライザはリクエストをデータベースに渡すことができ、セキュアなデータ・アクセス手法が期待どおりに機能します。

1.9 マップ・ビジュアライザ・デモおよびチュートリアル

いくつかのマップ・ビジュアライザ・デモおよびチュートリアルは、mvdemo.earという名前の別のアプリケーション・アーカイブに含まれており、このアーカイブは、mapviewer.earのデプロイ先と同じJava EEコンテナにデプロイされます。

これらのデモとチュートリアルは、一度デプロイすると、http://host:port/mvdemo/という形式のURLからアクセス可能になります

また、次の場所から入手可能なリソースも参照してください。

http://www.oracle.com/technetwork/middleware/mapviewer/downloads/