Overview of extending ArcGIS for Server for Java


Summary
This section covers aspects of ArcObjects that relate to extending ArcGIS for Server. ArcGIS for Server applications exploit the rich geographic information system (GIS) functionality of ArcObjects. See the Programming with ArcGIS for Server section in the ArcGIS Java Help to get a better understanding of the core ArcGIS for Server programming concepts including stateful vs. stateless ArcGIS for Server application development.

Extending ArcGIS functionality

ArcGIS provides functionality that allows you to build applications capable of geographic visualization, analysis, and data management. However, you might encounter situations, where out-of-the-box (standard) ArcGIS functionality cannot complete your geographic GIS solutions or the need to collaborate with third-party data and solutions. In these situations, the ArcObjects platform allows you to extend the functionality of ArcGIS products to suit your needs.
You can develop custom Java extensions that support specific functionality and plug seamlessly into the ArcGIS environment. Also, ArcGIS products, such as ArcGIS for Desktop, ArcGIS Engine, and ArcGIS for Server are built on the ArcObjects development platform. Therefore, it is possible to consume custom Java extensions across ArcGIS for Desktop, ArcGIS Engine, and ArcGIS for Server without modifications. The following is an overview of the extensions available to Java developers: 
  • Custom feature renderers—You can create custom feature renderers to control the way each feature in a map layer is drawn. Also, the custom feature renderers that you create can implement persistence behavior, and its state can be saved within a layer (.lyr) file or a map document (.mxd) file. To learn more about creating custom feature renderers, see Getting started with custom feature renderers.
  • Custom geoprocessing tools—You can create custom geoprocessing function tools to accomplish complex spatial analysis, data management, and batch conversions by integrating the wide spectrum of ArcObjects platform APIs with other external Java libraries. To learn more about creating custom geoprocessing function tools, see Getting started with custom geoprocessing tools.
  • Class extensions—You can create class extensions to customize data behavior in a geodatabase. To learn more, see Getting started with class extensions.
  • Plug-in data sources—You can create plug-in data sources to integrate and access external data formats with an ArcGIS geodatabase (read-only). To learn more, see Getting started with plug-in DS.
  • Utility objects—You can create custom utility objects to consolidate the recurring fine-grained ArcObjects method calls in an application. Creating custom utility objects reduces the interoperability overhead of fine-grained calls between Java and COM objects, improving performance of your application. 
  • Server object extensions—You can create extensions to the ArcGIS for Server Map Server Object to provide custom behavior that inherits functionality of map services (for example, caching, logging, and so on) but also increases performance by reducing fine-grained calls between client and server.
For more information about extending ArcGIS outside of the ArcGIS for Server environment, see the Resources section below. 

Extending ArcGIS for Server for Java

ArcGIS for Server is dedicated to hosting and running GIS software and services accessible by clients such as web applications.  The underlying ArcObjects API is exposed through business logic, processes, and services managed by ArcGIS for Server to enable multiuser access to GIS applications and resources.
While the entire ArcObjects API is available to clients in an n-tier architecture, the preferred level of granularity are the coarse grained server objects (SOs) such as MapServer, GeocodeServer, GeodataServer, as these objects allow for minimal calls to the server.  Occasionally, clients will require more functionality than offered by coarse grained SOs whereby access to fine grained ArcObjects is required.  This will involve multiple calls to ArcGIS for Server through the client application and can significantly impact a client application’s performance.  The reason for this is that when clients call on objects hosted by ArcGIS for Server, they are making calls across processes and performance is impacted by the amount of cross process calls clients make on the server. Extending ArcGIS for Server with your own coarse grained objects that encapsulate functionality in server-side components and expose coarse grained methods for client applications to call will optimize the performance of client applications, as these extensions will minimize the number of ArcObjects calls between client applications and ArcGIS for Server.
It's important to note that when making a call against an object running on the server from your client application, you are making that call across processes. The client application is running in one process, while the object is running in another process. Calls to objects across processes are significantly slower than calls to objects in the same process. It's also likely that your client application is running on a web server that is actually a different machine from the one the object is running on, so the calls are not only cross process but also cross machine.
Most developers will extend ArcGIS for Server to optimize the performance of their application. The goal of these extensions is to minimize the number of ArcObjects calls between client applications and the ArcGIS server by encapsulating functionality in server side components and exposing coarse grained methods for the client’s applications to call. 

There are two strategies for extending ArcGIS for Server through the concepts defined in this section are as follows: 
  • Server object extensions, which satisfy application requirements for functionality that requires making a large number of fine-grained ArcObjects calls within the ArcGIS server container process (ArcSOC.exe) attached to Server Object Types.
  • Utility objects, which have the advantage of not being required to be registered and configured with specific SOs so consequently they can be used in an empty server context.
These strategies for extending ArcGIS for Server will be covered in more detail in the following sections. 

Additional Resources







Development licensing Deployment licensing
Server Server