ArcGIS 10.1 で開発した Java サーバー オブジェクト エクステンション (SOE) は、10.2 以降のバージョンでも使用できます。ただし、ArcGIS Server 10.0 用に開発された SOE を 10.1 以降のバージョンに移行する場合は、SOE のソース コードに変更を加える必要があります。このトピックでは必要な変更について、および Java SOE をエクスポートするための新しい Eclipse ウィザードについて説明します。ArcGIS 10.1 以降のバージョンでは SOEManager ツールを使用しないことも説明します。
- SOE の ServerObjectExtProperties Java アノテーションを変更します。
SOE が Eclipse SOE 作成ウィザードを使用して作成されている場合、生成されたコードには SOE のメタデータを保持する ServerObjectExtProperties という Java アノテーションが含まれています。ArcGIS 10.0 では、このアノテーションには以下の属性がありました。
- displayName - ユーザーにわかりやすい SOE の表示名
- description - SOE の複数行の説明
- defaultSOAPCapabilities および allSOAPCapabilities - SOE のケーパビリティ
- properties - 「名前 = 値」で表される SOE のプロパティ
- supportsMSD - SOE が MSD ベースのサービスをサポートすることを示すフラグ
ArcGIS 10.1 以降のバージョンでは、サービス定義に基づくマップ サービスの導入により supportsMSD 属性が不要になったため、この属性が削除されました。その他の属性に変更はありません。このため、ArcGIS 10.0 の Java SOE の ServerObjectExtProperties アノテーションを次のように変更する必要があります。これで、ArcGIS 10.1 以降で動作するようになります。
@ServerObjectExtProperties(displayName = "Simple REST SOE", description = "My Simple REST Server Object Extension.", defaultSOAPCapabilities = "", allSOAPCapabilities = "", properties = "")
- ArcGIS 10.1 for Server 以降のバージョンのマップ サービスまたはイメージ サービスを使用するように SOE を変更します。
ArcGIS バージョン 10.1 以降では、直接 MXD ドキュメントに基づくマップ サービスまたはイメージ サービスはサポートされません。代わりに、サービス定義がバック エンドで使用されます。
このため、ArcGIS 10.1 以降では、com.esri.arcgis.carto.IMapServerDataAccess インターフェイスを使用して、マップ サービスまたはイメージ サービス経由で利用できるレイヤーにアクセスする必要があります。以下のコード スニペットは、サービス定義ベースのマップ サービスを通してレイヤーとして公開されているフィーチャクラスのハンドルを取得する方法を示しています。
IServerObjectHelper soh = . . .; //accessible to SOEs at runtime IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)soh.getServerObject(); IMapServer3 ms = (IMapServer3) mapServerDataAccess; String mapName = ms.getDefaultMapName(); int layerId = . . .;//integer id of the feature layer you are interested in accessing FeatureClass fc = new FeatureClass(mapServerDataAccess.getDataSource(mapName, layerId));