コード エクステンション
マップ サービスまたはイメージ サービス (SOE または SOI) を拡張するには、一般に、必要なインターフェイスを実装し、ビジネス ロジックを実行するコードを記述します。 SOE または SOI の Maven アーキタイプを使用して、エクステンションの作成を開始できます。 これにより、エクステンションに必要なインターフェイスが実装され、REST または SOAP Web サービスの呼び出しに SOESupport のクラスを使用して応答できることが保証されます。
マップ サービスまたはイメージ サービス (SOE または SOI) を拡張するには、一般に、必要なインターフェイスを実装し、ビジネス ロジックを実行するコードを記述します。 Java を使用している場合は、SOE または SOI の Maven アーキタイプを使用してエクステンションの作成を開始できます。 .NET を使用している場合は、Visual Studio のテンプレート プロジェクトを使用して作成を開始します。 テンプレートを使用することで、エクステンションに必要なインターフェイスが実装され、REST または SOAP Web サービスの呼び出しに SOESupport のクラスを使用して応答できることが保証されます。
エクステンションのコーディング手順の詳細については、ArcGIS Enterprise SDK のドキュメントをご参照ください。
サーバー オブジェクト インターセプターの考慮事項
サーバー オブジェクト インターセプター (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 に設定します。
ArcGIS GIS Server Administrator Directory を開き、サイン インします。 多くの場合、URL の形式は
https://gisserver.example.com:6443/arcgis/adminです。services をクリックして、必要なサービスの名前をクリックします。 リスト内にサービスが表示されていない場合は、このディレクトリーのフォルダー内にあります。
edit をクリックします。
サービス JSON の
propertiesセクションで、disableCachingプロパティを追加して、その値をtrueに設定します。たとえば、次のようになります:"properties": { ... "disableCaching": "true", ... },Save Edits をクリックします。
.soe ファイルの作成
エクステンション (SOE または SOI) は .soe ファイルにカプセル化されます。 .soe ファイルには、エクステンションを ArcGIS GIS Server に登録するために必要なすべての情報が含まれています。 .soe ファイルは、手動で実行したり、自動的に構築されるスクリプトに統合したりできる mvn install コマンドを使用して作成することもできます。
エクステンション (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 になります。