Migrieren einer 10.0-Java-Serverobjekterweiterung zu höheren Versionen
Java-Serverobjekterweiterungen (SOEs), die Sie mit ArcGIS 10.1 erstellt haben, können in Version 10.2 oder höher verwendet werden. Zum Migrieren einer für ArcGIS Server 10.0 entwickelten SOE nach 10.1 oder einer höheren Version sind einige Änderungen am Quellcode der SOE erforderlich. In diesem Thema werden die erforderlichen Änderungen erläutert, und es wird ein neuer Eclipse-Assistent zum Exportieren von Java-SOEs beschrieben. Außerdem wird erläutert, warum es SOEManager in ArcGIS 10.1 oder höher nicht mehr gibt.
- Ändern Sie die ServerObjectExtProperties-Java-Annotation der SOE.
Wenn eine SOE mit dem Eclipse-SOE-Erstellungsassistenten erstellt wird, schließt der generierte Code eine Java-Annotation mit dem Namen "ServerObjectExtProperties" ein, die Metadaten für die SOE enthält. In ArcGIS 10.0 hatte diese Annotation die folgenden Attribute:
- displayName – Benutzerfreundlicher Anzeigename der SOE
- description – Mehrzeilige Beschreibung der SOE
- defaultSOAPCapabilities und allSOAPCapabilities – Funktionen der SOE
- properties – Eigenschaften der SOE als Name = Wert-Paare
- supportsMSD – Flag, um anzuzeigen, dass SOE MSD-basierte Services unterstützt
In ArcGIS 10.1 oder höher (mit der Einführung der auf Service-Definitionen basierenden Karten-Services) ist das supportsMSD-Attribut nicht mehr erforderlich und wurde entfernt. Alle anderen Attribute bleiben unverändert. Sie müssen daher die Annotation zu ServerObjectExtProperties der ArcGIS 10.0 Java-SOE so ändern, dass sie ungefähr wie folgt aussieht, damit sie in ArcGIS 10.1 und höheren Versionen funktioniert:
@ServerObjectExtProperties(displayName = "Simple REST SOE", description = "My Simple REST Server Object Extension.", defaultSOAPCapabilities = "", allSOAPCapabilities = "", properties = "")
- Ändern Sie die SOE so, dass sie Image-Services für ArcGIS Server 10.1 oder höher verwendet.
ArcGIS 10.1 und höher unterstützen keine direkt auf MXD-Dokumenten basierenden Karten- oder Image-Services; stattdessen werden Service-Definitionen auf dem Back-End verwendet.
Sie greifen daher über einen Karten- oder Image-Service auf ArcGIS 10.1 und höhere Versionen mithilfe der com.esri.arcgis.carto.IMapServerDataAccess-Schnittstelle auf verfügbare Layer zu. Der folgende Codeausschnitt veranschaulicht, wie ein Ziehpunkt zu einer Feature-Class erstellt werden kann, die als Layer über einen auf einer Service-Definition basierenden Karten-Service bereitgestellt wird:
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));