Migrieren einer Java-Serverobjekterweiterung nach 10.1
Zum Migrieren einer für ArcGIS Server 10.0 entwickelten Java-Serverobjekterweiterung nach ArcGIS for Server 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 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 (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 funktioniert:
@ServerObjectExtProperties(displayName = "Simple REST SOE", description = "My Simple REST Server Object Extension.", defaultSOAPCapabilities = "", allSOAPCapabilities = "", properties = "")
- Ändern Sie die SOE so, dass sie ArcGIS 10.1 for Server-Karten-Services verwendet.
ArcGIS 10.1 unterstützt keine direkt auf MXD-Dokumenten basierenden Karten-Services; stattdessen unterstützt es Karten-Services, die auf Service-Definitionen basieren.
Sie greifen daher über einen Karten-Service auf ArcGIS 10.1 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));