Java サーバ オブジェクト エクステンションの 10.1 への移行
ArcGIS Server 10.0 用に開発された Java サーバ オブジェクト エクステンションを ArcGIS for Server 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 Server 10.1 のマップ サービスを使用するように 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));