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.

Schritte:
  1. Ä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 = "")
    
  2. Ä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));
    
9/23/2013