Las extensiones de objetos de servidor (SOE) Java desarrolladas con ArcGIS 10.1 se pueden usar con la versión 10.2 y con versiones posteriores. No obstante, migrar una SOE desarrollada para ArcGIS Server 10.0 a 10.1 y a versiones posteriores requiere algunas modificaciones en el código fuente de la SOE. En este tema se analizan las modificaciones requeridas y se describe un asistente Eclipse nuevo para exportar las SOE Java. Además explica la ausencia de la herramienta SOEManager en ArcGIS 10.1 y posteriores.
- Modificar la anotación Java ServerObjectExtProperties de las SOE.
Cuando se crea una SOE con el asistente Eclipse de creación de SOE, el código generado incluye una anotación Java llamada ServerObjectExtProperties, la cual incluye metadatos para la SOE. En ArcGIS 10.0, esta anotación tenía los atributos siguientes:
- displayName: nombre descriptivo de visualización de la SOE
- descripción: descripción multilínea de la SOE
- defaultSOAPCapabilities y allSOAPCapabilities: capacidades de la SOE
- propiedades: propiedades de la SOE como nombre = pares de valores
- supportsMSD: marcador para indicar que la SOE admite servicios basados en MSD
En ArcGIS 10.1 y en versiones posteriores, con la introducción de los servicios de mapas basados en definición de servicio, el atributo supportsMSD ya no es necesario y se ha eliminado. Todos los demás atributos permanecen sin cambios. Por lo tanto, debe modificar la anotación ServerObjectExtProperties de la SOE Java de ArcGIS 10.0 para que tenga un aspecto similar al siguiente y funcione en ArcGIS 10.1 y en versiones posteriores:
@ServerObjectExtProperties(displayName = "Simple REST SOE", description = "My Simple REST Server Object Extension.", defaultSOAPCapabilities = "", allSOAPCapabilities = "", properties = "")
- Modifique la SOE para utilizar servicios de mapas o de imágenes de ArcGIS Server 10.1 y de versiones posteriores.
Las versiones ArcGIS 10.1 y posteriores no admiten servicios de mapas o imágenes basados directamente en documentos MXD. En su lugar, se utilizan definiciones de servicios en el back end.
Por consiguiente, utilizará la interfaz com.esri.arcgis.carto.IMapServerDataAccess para acceder a capas disponibles por medio de un servicio de mapas o de imágenes en ArcGIS 10.1 y en versiones posteriores. El siguiente fragmento de código demuestra cómo obtener un control para una clase de entidad expuesta como una capa por medio de un servicio de mapas basado en la definición del servicio:
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));