Расширения объектов сервера (SOE) Java, которые вы разрабатываете в ArcGIS 10.1, можно использовать и в версии 10.2. и более поздних версий. Однако перенос SOE, разработанного для ArcGIS for Server 10.0, на 10.1 и более поздние версии требует внесения некоторых изменений в исходный код SOE. В данной статье описываются необходимые изменения и новый мастер Eclipse для экспорта расширений объектов сервера Java. В ней также объясняется отсутствие инструмента SOEManager в ArcGIS версий 10.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 = "")
- Изменение 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));