Migrating 10.0 Java SOEs to 10.1 and above

This topic discusses the changes required to migrate a Java server object extension (SOE) developed for ArcGIS 10.0 Server to ArcGIS 10.1 (or above) for Server. Apart from source code modifications, new deployment wizards and workflows also need to be used to deploy SOEs to version 10.1 or above.

In this topic

Modifying an SOE’s ServerObjectExtProperties Java annotation

When an SOE is created using the Eclipse SOE creation wizard, the generated code includes a Java Annotation called ServerObjectExtProperties, which holds metadata for the SOE. At ArcGIS 10.0, this annotation had the following attributes:
  • displayName—User-friendly display name of SOE
  • description—Multiline description of the SOE
  • defaultSOAPCapabilities and allSOAPCapabilities—Capabilities of the SOE
  • properties—Properties of the SOE as name=value pairs
  • supportsMSD—Flag to indicate that SOE supports MSD-based services
At ArcGIS 10.1 and above, with the introduction of service definition-based map services, the supportsMSD attribute is no longer required and has been removed. All other attributes remain unchanged. You must therefore modify your ArcGIS 10.0 Java SOE’s ServerObjectExtProperties annotation to look similar to the following code example, to work at ArcGIS 10.1 and above:
@ServerObjectExtProperties(displayName = "Simple REST SOE", description = 
    "My Simple REST Server Object Extension.", defaultSOAPCapabilities = "",
    allSOAPCapabilities = "", properties = "")

Modifying an SOE to use map services

ArcGIS for Server 10.1 and above does not support map services that are based on MXD or MSD documents; it supports map services that are based on service definitions. You'll use the com.esri.arcgis.carto.IMapServerDataAccess interface to access layers from a map service. The following code snippet demonstrates how to obtain a handle to a feature class exposed as layer in a service definition based map service:
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,

Deploying SOEs

At ArcGIS 10.0, the unit of deployment for Java SOEs was a JAR file. For .NET and C++ SOEs, the deployment units were DLL files. This difference in deployment units required users to use different workflows and tools for registering SOEs as extensions to map services. ArcGIS 10.1 introduced a common deployment unit, called the .soe file. A .soe file is a container that is programming language agnostic. In other words, it holds SOEs written in Java, .NET, and C++. The use of a uniform container to hold SOEs has allowed for a simple and user-friendly deployment experience via ArcGIS Server Manager.
See the Deploying and undeploying SOEs topic to learn about the new deployment experience. For more details on how to export an SOE to a .soe file, consult the developer topics for the programming language of your choice. For Java developers, the Developing REST SOEs and Developing SOAP SOEs topics discuss the new Eclipse wizard that facilitates export of Java SOEs.

Development licensingDeployment licensing