Overview of Extending ArcGIS Server for Java


Summary This section covers aspects of ArcObjects that relate to extending ArcGIS Server. ArcGIS Server applications exploit the rich GIS functionality of ArcObjects. You are encouraged to read the Programming with ArcGIS Server section in the ArcGIS Java Help System to get a better understanding of the core ArcGIS Server programming concepts including stateful vs. stateless ArcGIS Server application development.

About 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 information system (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 Desktop, ArcGIS Engine, and ArcGIS Server are built on the ArcObjects development platform. Therefore, it is possible to consume custom Java extensions across ArcGIS Desktop, ArcGIS Engine, and ArcGIS Server without modifications. Below is a high level overview of all 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 hence its state can be saved within a layer (.lyr) file or a map document (.mxd) file. To learn more about creating custom feature renderers read topic Getting Started with Custom Feature Renderer.
  • 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 ArcObject Platform APIs with other external Java libraries. To learn more about creating custom geoprocessing function tools read topic Getting Started with custom geoprocessing tool.
  • Class Extensions: You can create class extensions to customize data behavior in a geodatabase. To learn more read topic Getting started with Class Extensions.
  • Plug-in data sources: You can create plug-in data sources to integrate and access external data formats with ArcGIS geodatabase (read-only). To learn more read topic, Getting started with plug-in DS.
  • Utility Objects: You can custom utility objects to consolidate the recurring fine-grained ArcObjects method calls in an application. Creating custom utility objects heavily 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 ArcGIS Server's Map Server Object to provide custom behavior that inherits functionality of map services, e.g. caching, logging, etc., but also increases performance by reducing fine-grained calls between client and server.
In this section we will be discussing Java extensions as they pertain to ArcGIS Server for Java.  More information can be obtained about extending ArcGIS outside of the ArcGIS Server environment in the Resources section below. 

Extending ArcGIS Server for Java

ArcGIS 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 Server to enable multi-user 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 (SO) like MapServer, GeocodeServer, GeodataServer, etc, 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 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 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 Server with your own coarse grained objects which 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 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 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 client’s applications to call. 

There are two strategies for extending ArcGIS Server through the concepts defined in this section. 
  1. 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.
  2. Utility objects, which have the advantage of not being required to be registered and configured with specific Server Object’s and consequently they can be used in an empty server context.
These strategies for extending ArcGIS Server will be covered in more detail in the following sections. 

Additional Resources







Development licensing Deployment licensing
Server Server