Skip To Content

コード エクステンション

マップ サービスまたはイメージ サービス (SOE または SOI) を拡張するには、一般に、必要なインターフェイスを実装し、ビジネス ロジックを実行するコードを記述します。 Java を使用している場合は、SOE または SOI の Maven アーキタイプを使用してエクステンションの作成を開始できます。 .NET を使用している場合は、Visual Studio のテンプレート プロジェクトを使用して作成を開始します。 テンプレートを使用することで、エクステンションに必要なインターフェイスが実装され、REST または SOAP Web サービスの呼び出しに SOESupport のクラスを使用して応答できることが保証されます。

エクステンションのコーディング手順の詳細については、ArcGIS Enterprise SDK のドキュメントをご参照ください。

サーバー オブジェクト インターセプター (SOI) の考慮事項

サーバー オブジェクト インターセプター (SOI) を作成する場合、SOI の目的が、マップおよびイメージ サービスで利用できる多くの操作のうち 1 つまたは少数の操作だけを強化することであっても、すべてのタイプの受信リクエストを処理する必要があります。 このセクションでは、処理する必要のあるインターフェイスと利用可能な方法について説明します。これらは、実装する機能が、セキュリティに関連しているか、セキュリティ以外に関連しているかによって異なります。

REST、SOAP、および OGC サービス リクエストのインターセプト

マップおよびイメージ サービスは、次の 3 種類のリクエストをサポートしています。

  • REST API リクエスト
  • SOAP API リクエスト
  • OGC リクエスト

SOI でこれらのリクエストをインターセプトできるようにするには、次のインターフェイスを実装する必要があります。

  • REST API を処理する場合は、[IRESTRequestHandler]
  • ArcGIS Pro が送信するリクエストを含む SOAP API リクエストを処理する場合は、[IRequestHandler]
  • OGC リクエストを処理する場合は、[IWebRequestHandler]

特定のサービス構成が OGC リクエストをサポートしていない場合でも、上記すべてのインターフェイスを処理する必要があります。 実装しているビジネス ロジックに応じて、2 つの一般的な方法があります。

注意:

マップまたはイメージ サービスにキャッシュ タイルが含まれていない場合、これらのタイルに対して実行されたリクエストをインターセプトできません。

セキュリティ機能を実行する SOI を実装する場合は、はじめに上記のインターフェイスをすべて実装し、すべてのリクエストをブロックすることをお勧めします。 カスタム コードを実装するため、上記インターフェイスを使用してアクセスを論理的に許可することができます。 最初に受信リクエストをブロックせずに、希望するアクセスを許可した場合、意図せずにセキュリティの脆弱性にさらされるリスクが高まります。

セキュリティ機能を実装しない場合、通常の機能を許可するために、基盤となる標準的な実装にすべてのリクエストを渡すことで、3 つのインターフェイスを実装することができます。 次に、強化する操作にその他のビジネス ロジックを追加します。

サービスを SOI で構成すると、サーバー ワークフローは、すべてのサービス リクエストを SOI にルーティングします。 SOI の役割は、リクエストをフィルタリングし、リクエストをマップまたはイメージ サービス オブジェクト (該当する場合) に委任し、必要に応じて、応答をクライアントに返す前に処理することです。

レイヤー レベルのアクセスの制御の実装

SOI を使用してレイヤー レベルのアクセスの制御を実装する場合、ArcGIS GIS Server の REST ハンドラーを構成して、サービスに含まれるすべてのレイヤーのリソースのキャッシュ作成を無効化する必要があります。 これにより、操作をインターセプトして、許可されないレイヤーを除外することができます。 これを無効化するには、ArcGIS GIS Server Administrator Directory で、サービスの disableCaching プロパティを true に設定します。

  1. ArcGIS GIS Server Administrator Directory を開いてサイン インします。 多くの場合、URL の形式は https://gisserver.domain.com:6443/arcgis/admin です。
  2. [services] をクリックして、必要なサービスの名前をクリックします。 リスト内にサービスが表示されていない場合は、このディレクトリのフォルダー内にあります。
  3. [edit] をクリックします。
  4. サービス JSON の properties セクションで、disableCaching プロパティを追加して、その値を true に設定します。たとえば、次のようになります。
    "properties": {
      ...
      "disableCaching": "true",
      ...
     },
  5. [Save Edits] をクリックします。

.soe ファイルの作成

エクステンション (SOE または SOI) は .soe ファイルにカプセル化されます。 .soe ファイルには、エクステンションを ArcGIS GIS Server に登録するために必要なすべての情報が含まれています。 .NET を使用している場合、.soe ファイルはプロジェクトを構築したときに作成されます。 Java を使用している場合、Maven SOE または SOI プロジェクトを構築して .soe ファイルを作成します。 .soe ファイルは、手動で実行したり、自動的に作成されるスクリプトに統合したりできる mvn install コマンドを使用して作成することもできます。

ArcGIS Enterprise SDK を使用して開発されたエクステンションには、接尾辞 _ent がその .soe ファイル名に追加されています。 たとえば、[SimpleRESTSOE] という名前のエクステンションの出力ファイル名は SimpleRESTSOE_ent.soe になります。