Перенос расширений серверных объектов 10.0 Java в более новые версии

Расширения объектов сервера (SOE) Java, которые вы разрабатываете в ArcGIS 10.1, можно использовать и в версии 10.2. и более поздних версий. Однако перенос SOE, разработанного для ArcGIS for Server 10.0, на 10.1 и более поздние версии требует внесения некоторых изменений в исходный код SOE. В данной статье описываются необходимые изменения и новый мастер Eclipse для экспорта расширений объектов сервера Java. В ней также объясняется отсутствие инструмента SOEManager в ArcGIS версий 10.1 и выше.

Шаги:
  1. Изменение аннотации Java ServerObjectExtProperties в SOE.

    Когда расширение объектов сервера создается с помощью мастера создания Eclipse, полученный код включает аннотацию Java, называющуюся ObjectExtProperties, которая содержит метаданные для SOE. В ArcGIS 10.0 эта аннотация имела следующие атрибуты:

    • displayName – удобное отображаемое имя SOE
    • description – многострочное описание SOE
    • defaultSOAPCapabilities и allSOAPCapabilities – функции SOE
    • properties – свойства SOE в виде имя = пары значений
    • supportsMSD – указание на то, что SOE поддерживает сервисы на основе MSD.

    В ArcGIS 10.1 и выше из-за появления картографических сервисов на основе определения сервиса атрибут supportsMSD стал не нужен и был удален. Все остальные атрибуты сохранены без изменений. Поэтому для работы в ArcGIS 10.1 необходимо изменить аннотацию ServerObjectExtProperties в SOE Java для ArcGIS 10.0 и выше, чтобы она выглядела следующим образом:

    @ServerObjectExtProperties(displayName = "Simple REST SOE", 
    	description = "My Simple REST Server Object Extension.",
    	defaultSOAPCapabilities = "", allSOAPCapabilities = "", 
    properties = "")
    
  2. Изменение SOE для использования картографических сервисов и сервисов изображений в ArcGIS Server 10.1 и более поздних версиях.

    ArcGIS версии 10.1 и выше не поддерживает картографические сервисы и сервисы изображений, основанные непосредственно на документах MXD. Вместо этого он использует определения сервиса на серверной части.

    Поэтому следует использовать интерфейс com.esri.arcgis.carto.IMapServerDataAccess для доступа к слоям, доступным через картографический сервис и сервис изображений в ArcGIS 10.1 и выше. Следующий фрагмент кода показывает, как получить дескриптор для класса пространственных объектов, представленного как слой, через картографический сервис, основанный на определении сервиса:

    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));
    
5/16/2014