Java サーバ オブジェクト エクステンションの 10.1 への移行

ArcGIS Server 10.0 用に開発された Java サーバ オブジェクト エクステンションを ArcGIS for Server 10.1 に移行するには、SOE のソース コードにいくつかの変更を加える必要があります。このトピックでは必要な変更について、および Java SOE をエクスポートするための新しい Eclipse ウィザードについて説明します。ArcGIS 10.1 では SOEManager ツールを使用しないことも説明します。

手順:
  1. 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 = "")
    
  2. 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));
    
9/14/2013