OracleAS MapViewerの主な用途は、様々なmapリクエストを処理することです。ただし、OracleAS MapViewerはXML APIによって、データソースの追加などの各種管理(非map)リクエストも受け入れます。ベース・マップ、テーマまたはスタイルをリストするリクエストを除き、すべてのOracleAS MapViewer管理リクエストでは、OracleAS MapViewerの管理(Admin)ページにログインする必要があります。OracleAS MapViewerのメイン・ページにリンクがあります。この項では、各管理リクエストおよびそのレスポンスの書式について説明します。
管理リクエストはすべて<non_map_request
>要素に埋め込まれますが、管理レスポンスはすべて<non_map_response
>要素に埋め込まれます。ただし、OracleAS MapViewerによって例外がスローされた場合、レスポンスは<oms_error
>要素(3.5項を参照)となります。
管理リクエストは、実行されるタスクの種類に応じた項で説明します。
データソースを追加、削除、再定義およびリストできます。(データソースの詳細およびその定義方法は、1.5.2.12項を参照してください。)
<add_data_source>
要素には、次の定義が含まれます。
<!ELEMENT non_map_request add_data_source> <!ELEMENT add_data_source EMPTY> <!ATTLIST add_data_source name CDATA #REQUIRED container_ds CDATA #IMPLIED jdbc_tns_name CDATA #IMPLIED jdbc_host CDATA #IMPLIED jdbc_port CDATA #IMPLIED jdbc_sid CDATA #IMPLIED jdbc_user CDATA #IMPLIED jdbc_password CDATA #IMPLIED jdbc_mode (oci8 | thin) #IMPLIED number_of_mappers INTEGER #REQUIRED >
name
属性は、データソース名を識別します。この名前は、OracleAS MapViewerデータソース間で一意である必要があります。(データソース名は、大/小文字が区別されません。)
コンテナ・データソース名、ネット・サービス名(TNS名)または必要なすべての接続情報を指定する必要があります。つまり、次の1つのみを指定する必要があります。
container_ds
jdbc_tns_name
jdbc_host
、jdbc_port
、jdbc_sid
、jdbc_mode
、jdbc_user
およびjdbc_password
container_ds
属性は、J2EEコンテナのJava Naming and Directory Interface(JNDI)名前空間で定義されているデータソース名を識別します。OC4Jの場合、data-source.xml
ファイルで定義されたデータソースのejb-location
属性です。
jdbc_tns_name
属性では、tnsnames.ora
ファイルで定義されているネット・サービス名を識別します。
jdbc_host
属性は、データベース・ホスト・システム名を識別します。
jdbc_port
属性は、TNSリスナー・ポート番号を識別します。
jdbc_sid
属性は、データベースのSIDを識別します。
jdbc_user
属性は、接続先のユーザーを識別します(map
)。
jdbc_password
属性は、jdbc_user
属性で指定されているユーザーのパスワードを識別します。
jdbc_mode
属性は、JDBC接続モード(thin
またはoci8
)を識別します。oci8
を指定した場合、OracleAS MapViewerが動作する中間層にOracle Clientがインストールされている必要があります。すべてのデータソースにthin
が使用される場合、Oracle Clientは必要ありません。
number_of_mappers
属性は、このデータソースについて作成されるマップ・レンダラの数(つまり、OracleAS MapViewerが同時に処理できるリクエスト数)を識別します。未処理のmapリクエストはキューに入れられ、最終的には処理されます。たとえば、この値が3の場合、OracleAS MapViewerでは最大3つのmapリクエストを同時に処理できます。3つのリクエストの処理中に送信された4つ目のmapリクエストは、OracleAS MapViewerが現在のリクエストのいずれかの処理を完了するまで待機します。単一データソースの最大mapper数は64です。
例7-1では、必要なすべての接続情報を指定して、mvdemo
というデータソースを追加します。
例7-1 詳細な接続情報の指定によるデータソースの追加
<?xml version="1.0" standalone="yes"?> <non_map_request> <add_data_source name="mvdemo" jdbc_host="elocation.us.oracle.com" jdbc_port="1521" jdbc_sid="orcl" jdbc_user="scott" jdbc_password="tiger" jdbc_mode="thin" number_of_mappers="5"/> </non_map_request>
例7-2では、コンテナ・データソース名を指定して、mvdemo
というデータソースを追加します。
例7-2 コンテナ・データソースの指定によるデータソースの追加
<?xml version="1.0" standalone="yes"?> <non_map_request> <add_data_source name="mvdemo" container_ds="jdbc/OracleDS" number_of_mappers="5"/> </non_map_request>
add_data_source
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response add_data_source> <!ELEMENT add_data_source EMPTY> <!ATTLIST add_data_source succeed (true | false) #REQUIRED comment CDATA #IMPLIED >
リクエストが成功しなかった場合にのみcomment
属性が表示され、この場合は理由がcomment
属性に含まれます。次の例のsucceed="true"
は、ユーザー・リクエストがサーバーに到着し、妥当性に関して例外が発生することなく処理されたことを示します。これは、リクエストに含まれるユーザーの意図したアクションがOracleAS MapViewerサーバーで実際に実行されたかどうかを示すものではありません。この例では、comment
属性の表示によりリクエストが失敗したことがわかり、comment
属性に関連付けられた文字列("data source already exists"
)によって失敗の理由がわかります。
<?xml version="1.0" ?> <non_map_response> <add_data_source succeed="true" comment="data source already exists"/> </non_map_response>
<remove_data_source>
要素には、次の定義が含まれます。
<!ELEMENT non_map_request remove_data_source> <!ELEMENT remove_data_source EMPTY> <!ATTLIST remove_data_source data_source CDATA #REQUIRED jdbc_password CDATA #REQUIRED >
data_source
属性は、削除されるデータソースの名前を識別します。
jdbc_password
属性は、データソースにおけるデータベース・ユーザーのログイン・パスワードを識別します。jdbc_password
は、セキュリティ上の理由(OracleAS MapViewerからデータソースを誤って削除してしまうことの防止)により必須です。
データソースを削除した場合は、OracleAS MapViewerが対応するデータベース・スキーマを使用できなくなるのみで、実際にそのスキーマの内容は削除されません。
例7-3では、mvdemo
というデータソースを削除します。
例7-3 データソースの削除
<?xml version="1.0" standalone="yes"?> <non_map_request> <remove_data_source data_source="mvdemo" jdbc_password="tiger"/> </non_map_request>
remove_data_source
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response remove_data_source> <!ELEMENT remove_data_source EMPTY> <!ATTLIST remove_data_source succeed (true | false) #REQUIRED >
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <remove_data_source succeed="true"/> </non_map_response>
便宜上、OracleAS MapViewerではデータソースを再定義できます。具体的には、同じ名前のデータソースがすでに存在する場合にこのデータソースは削除され、新規の定義を使用して追加されます。その名前のデータソースが存在しない場合、新規データソースが追加されます。リクエストで指定したものと同じ名前、ホスト、ポート、SID、ユーザー名、パスワード、モードおよびmapper数のデータソースがすでに存在する場合、そのリクエストは無視されます。
<redefine_data_source>
要素には、次の定義が含まれます。
<!ELEMENT non_map_request redefine_data_source> <!ELEMENT redefine_data_source EMPTY> <!ATTLIST redefine_data_source name CDATA #REQUIRED container_ds CDATA #IMPLIED jdbc_tns_name CDATA #IMPLIED jdbc_host CDATA #IMPLIED jdbc_port CDATA #IMPLIED jdbc_sid CDATA #IMPLIED jdbc_user CDATA #IMPLIED jdbc_password CDATA #IMPLIED jdbc_mode (oci8 | thin) #IMPLIED number_of_mappers INTEGER #REQUIRED >
属性およびその説明は、<add_data_source>
要素と同じです。7.1.1項を参照してください。
redefine_data_source
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response redefine_data_source> <!ELEMENT redefine_data_source EMPTY> <!ATTLIST redefine_data_source succeed (true | false) #REQUIRED >
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <redefine_data_source succeed="true"/> </non_map_response>
<list_data_sources>
要素は、現在実行中のOracleAS MapViewerによって認識されている全データソースをリストします。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request list_data_sources> <!ELEMENT list_data_sources EMPTY>
次に例を示します。
<?xml version="1.0" standalone="yes"?> <non_map_request> <list_data_sources/> </non_map_request>
list_data_sources
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response map_data_source_list> <!ELEMENT map_data_source_list (map_data_source*) > <!ATTLIST map_data_source_list succeed (true|false) #REQUIRED > <!ELEMENT map_data_source EMPTY> <!ATTLIST map_data_source name CDATA #REQUIRED container_ds CDATA #IMPLIED host CDATA #IMPLIED sid CDATA #IMPLIED port CDATA #IMPLIED user CDATA #IMPLIED mode CDATA #IMPLIED numMappers CDATA #REQUIRED >
各データソースについて、データベース・ユーザーのパスワードを除くすべてのデータソース情報が戻されます。
次の例は、2つのデータソースに関する情報が含まれたレスポンスです。
<?xml version="1.0" ?> <non_map_response> <map_data_source_list succeed="true"> <map_data_source name="mvdemo" host="elocation.us.oracle.com" sid="orcl" port="1521" user="scott" mode="thin" numMappers="3"/> <map_data_source name="geomedia" host="geomedia.us.oracle.com" sid="orcl" port="8160" user="scott" mode="oci8" numMappers="7"/> </map_data_source_list> </non_map_response>
<data_source_exists>
要素では、指定したデータソースが存在するかどうかを調べることができます。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request data_source_exists> <!ELEMENT data_source_exists EMPTY> <!ATTLIST data_source_exists data_source CDATA #REQUIRED >
次に例を示します。
<?xml version="1.0" standalone="yes"?> <non_map_request> <data_source_exists data_source="mvdemo"/> </non_map_request>
data_source_exists
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response data_source_exists> <!ELEMENT data_source_exists EMPTY> <!ATTLIST data_source_exists succeed (true | false) #REQUIRED exists (true | false) #REQUIRED >
succeed
属性は、リクエストが正常に処理されたかどうかを示します。
exists
属性は、データソースが存在するかどうかを示します。
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <data_source_exists succeed="true" exists="true"/> </non_map_response>
<list_maps>
要素は、指定したデータソース内の全ベース・マップをリストします。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request list_maps> <!ELEMENT list_maps EMPTY> <!ATTLIST list_maps data_source CDATA #REQUIRED >
次の例では、mvdemo
というデータソース内の全ベース・マップをリストします。
<?xml version="1.0" standalone="yes"?> <non_map_request> <list_maps data_source="mvdemo"/> </non_map_request>
list_maps
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response map_list> <!ELEMENT map_list (map*) > <!ATTLIST map_list succeed (true | false) #REQUIRED > <!ATTLIST map name CDATA #REQUIRED >
succeed
属性は、リクエストが正常に処理されたかどうかを示します。
name
属性は、各マップを識別します。
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <map_list succeed="true"> <map name="DEMO_MAP"/> <map name="DENSITY_MAP"/> </map_list> </non_map_response>
<list_predefined_themes>
要素は、指定のデータソースで定義されたすべてのテーマ、または指定したマップに対する指定のデータソースで定義されたすべてのテーマをリストします。
テーマに関連付けられたマップに関係なく、データソースで定義されたすべてのテーマをリクエストするためのDTDには、次の定義が含まれます。
<!ELEMENT non_map_request list_predefined_themes> <!ELEMENT list_predefined_themes EMPTY> <!ATTLIST list_predefined_themes data_source CDATA #REQUIRED >
次の例では、mvdemo
というデータソースで定義された全テーマをリストします。
<?xml version="1.0" standalone="yes"?> <non_map_request> <list_predefined_themes data_source="mvdemo"/> </non_map_request>
データソースで定義され、特定のマップに関連付けられたすべてのテーマをリクエストするためのDTDには、次の定義が含まれます。
<!ELEMENT non_map_request list_predefined_themes> <!ELEMENT list_predefined_themes EMPTY> <!ATTLIST list_predefined_themes data_source CDATA #REQUIRED map CDATA #REQUIRED >
次の例では、tilsmenv
というデータソースで定義され、QA_MAP
というマップに関連付けられたすべてのテーマをリストします。
<?xml version="1.0" standalone="yes"?> <non_map_request> <list_predefined_themes data_source="tilsmenv" map="QA_MAP"/> </non_map_request>
list_predefined_themes
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response predefined_theme_list> <!ELEMENT predefined_theme_list (predefined_theme*) > <!ATTLIST predefined_theme_list succeed (true | false) #REQUIRED > <!ELEMENT predefined_theme EMPTY> <!ATTLIST predefined_theme name CDATA #REQUIRED >
succeed
属性は、リクエストが正常に処理されたかどうかを示します。
name
属性は、各テーマを識別します。
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <predefined_theme_list succeed="true"> <predefined_theme name="THEME_DEMO_CITIES"/> <predefined_theme name="THEME_DEMO_BIGCITIES"/> <predefined_theme name="THEME_DEMO_COUNTIES"/> <predefined_theme name="THEME_DEMO_COUNTY_POPDENSITY"/> <predefined_theme name="THEME_DEMO_HIGHWAYS"/> <predefined_theme name="THEME_DEMO_STATES"/> <predefined_theme name="THEME_DEMO_STATES_LINE"/> </predefined_theme_list> </non_map_response>
戻されたリストにおける名前の順序は一定ではないため注意してください。
<list_styles>
要素は、指定したデータソースに対して定義されたスタイルをリストします。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request list_styles> <!ELEMENT list_styles EMPTY> <!ATTLIST list_styles data_source CDATA #REQUIRED style_type (COLOR|LINE|MARKER|AREA|TEXT|ADVANCED) #IMPLIED >
style_type
に値を指定した場合、そのタイプのスタイルのみがリストされます。スタイルのタイプには、COLOR
、LINE
、MARKER
、AREA
、TEXT
およびADVANCED
があります。style_type
を指定しない場合は、すべてのタイプの全スタイルがリストされます。
次の例では、COLOR
タイプのスタイルのみをリストします。
<?xml version="1.0" standalone="yes"?> <non_map_request> <list_styles data_source="mvdemo" style_type="COLOR"/> </non_map_request>
list_styles
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response style_list> <!ELEMENT style_list (style*) > <!ATTLIST style_list succeed (true | false) #REQUIRED > <!ELEMENT style EMPTY> <!ATTLIST style name CDATA #REQUIRED >
次の例は、COLOR
タイプのスタイルに関するリクエストへのレスポンスを示しています。
<?xml version="1.0" ?> <non_map_response> <style_list succeed="true"> <style name="SCOTT:C.BLACK"/> <style name="SCOTT:C.BLACK GRAY"/> <style name="SCOTT:C.BLUE"/> <style name="SCOTT:C.CRM_ADMIN_AREAS"/> <style name="SCOTT:C.CRM_AIRPORTS"/> </style_list> </non_map_response>
レスポンス内の各スタイル名の書式はOWNER:NAME
(例: SCOTT:C.BLACK
)で、OWNER
はスタイルを所有するスキーマ・ユーザーです。
OracleAS MapViewerでは、次の2種類のキャッシュが使用されます。
スタイル、テーマおよびベース・マップの定義などのマッピング・メタデータに対応するメタデータ・キャッシュ
テーマ・データ(マップの生成に使用されるジオメトリ・データおよび画像データ)に対応する空間データ・キャッシュ
これらのキャッシュを使用すると、キャッシュされた情報についてOracleAS MapViewerがデータベースにアクセスしないため、パフォーマンスが向上します。ただし、その情報がキャッシュに格納された後に変更された場合は、OracleAS MapViewerの表示に古い情報が反映される場合があります。
OracleAS MapViewerを再起動せずに最新情報を使用するには、これらのキャッシュのいずれかまたは両方の内容を消去(無効化)します。キャッシュが消去された場合、次のOracleAS MapViewerリクエストでは必要な情報がデータベースから取得され、適切なキャッシュに情報が格納されます。
ユーザーがデータソースに基づくマップをリクエストすると、OracleAS MapViewerでは、そのデータソースのスタイル、テーマおよびベース・マップの定義といったマッピング・メタデータがキャッシュされます。これによって、OracleAS MapViewerがマッピング・メタデータをフェッチする際に、データベースに不必要にアクセスすることを防げます。ただし、マッピング・メタデータへの変更は、OracleAS MapViewerが再起動されるまで有効になりません。
OracleAS MapViewerを再起動せずに変更済の定義を使用するには、OracleAS MapViewerに対し、指定のデータソースについてキャッシュされたすべてのマッピング・メタデータを消去(つまり、キャッシュから削除)するようにリクエストできます。メタデータ・キャッシュを消去すると、OracleAS MapViewerでは、最新のマッピング・メタデータを取得する場合にデータベースにアクセスする必要があります。
<clear_cache>
要素は、OracleAS MapViewerメタデータ・キャッシュを消去します。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request clear_cache> <!ELEMENT clear_cache EMPTY> <!ATTLIST clear_cache data_source CDATA #REQUIRED >
data_source
属性は、OracleAS MapViewerメタデータ・キャッシュから削除されるメタデータを含むデータソースの名前を指定します。
次の例では、OracleAS MapViewerメタデータ・キャッシュからデータソースmvdemo
のメタデータを消去します。
<?xml version="1.0" standalone="yes"?> <non_map_request> <clear_cache data_source="mvdemo"/> </non_map_request>
clear_cache
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response clear_cache> <!ELEMENT clear_cache EMPTY> <!ATTLIST clear_cache succeed (true | false) #REQUIRED >
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <clear_cache succeed="true"/> </non_map_response>
OracleAS MapViewerでは、データベースからメモリーにデータをロードしてレンダリングする際に、キャッシュしないように指定されている場合を除いて、事前定義済テーマの空間データ(ジオメトリまたは地理参照画像)をキャッシュします。(OracleAS MapViewerは動的テーマまたはJDBCテーマをキャッシュしません。)したがって、事前定義済テーマが頻繁にアクセスされている場合は、データの大部分がキャッシュに格納されていると考えられます。ただし、テーマの空間データがデータベースで変更されている場合、変更はマップ上に表示されません。これは、OracleAS MapViewerが引き続きキャッシュのデータ・コピーを使用しているためです。OracleAS MapViewerを再起動せずに変更済のテーマ・データを表示するには、まずそのテーマのキャッシュ・データを消去する必要があります。
<clear_theme_cache>
要素は、事前定義済テーマのキャッシュ・データを消去します。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request clear_theme_cache> <!ELEMENT clear_theme_cache EMPTY> <!ATTLIST clear_theme_cache data_source CDATA #REQUIRED theme CDATA #REQUIRED >
data_source
属性は、データソースの名前を指定します。theme
属性は、そのデータソース内の事前定義済テーマの名前を指定します。
次の例では、データソースmvdemo
内のSTATES
という事前定義済テーマのキャッシュされた空間データを消去します。
<?xml version="1.0" standalone="yes"?> <non_map_request> <clear_theme_cache data_source="mvdemo" theme="STATES"/> </non_map_request>
clear_theme_cache
リクエストに対するレスポンスのDTDは、次のような書式になります。
<!ELEMENT non_map_response clear_theme_cache> <!ELEMENT clear_theme_cache EMPTY> <!ATTLIST clear_theme_cache succeed (true | false) #REQUIRED >
次に例を示します。
<?xml version="1.0" ?> <non_map_response> <clear_theme_cache succeed="true"/> </non_map_response>
<edit_config_file>
要素を使用すると、OracleAS MapViewer構成ファイル(mapViewerConfig.xml
)を編集できます。この要素には、次の定義が含まれます。
<!ELEMENT non_map_request edit_config_file> <!ELEMENT edit_config_file EMPTY>
注意: <edit_config_file> 要素は、スタンドアロンのOC4J環境または起動しているプロセスが1つのみのクラスタ化されていないOC4JインスタンスでOracleAS MapViewerを実行している場合のみ使用します。それ以外の環境では、加えた変更が1つのOracleAS MapViewerインスタンスにのみ適用され、一貫性がそこなわれる可能性があります。 |
リクエストを次のように指定します。
<?xml version="1.0" standalone="yes"> <non_map_request> <edit_config_file/> </non_map_request>
リクエストを発行すると、OracleAS MapViewer構成ファイルの現在のコンテンツを含むHTMLフォームが表示されます。フォームを編集してコンテンツを変更し、「保存」ボタンをクリックして変更をコミットします。ただし、OracleAS MapViewerサーバーを再起動するまで、変更は有効になりません(7.7項を参照)。
通常、OracleAS MapViewerサーバーを最も安全に再起動するには、含まれているOC4Jインスタンスを再起動します。ただし、スタンドアロンのOC4J環境でOracleAS MapViewerを実行している場合、またはOC4Jインスタンスがクラスタ化されておらず、起動されているJavaプロセスが1つのみの場合は、OC4Jインスタンス全体を起動せずに、<restart>
要素を使用して簡単にOracleAS MapViewerを再起動できます。<restart>
要素には、次の定義が含まれます。
<!ELEMENT non_map_request edit_config_file> <!ELEMENT restart EMPTY>
リクエストを次のように指定します。
<?xml version="1.0" standalone="yes"> <non_map_request> <restart/> </non_map_request>