com.esri.arcgis.networkanalyst
Class NAServer

java.lang.Object
  extended by com.esri.arcgis.networkanalyst.NAServer
All Implemented Interfaces:
com.esri.arcgis.interop.RemoteObjRef, INAServer, INAServer2, IServerObjectExtension, ILogSupport, IObjectActivate, IObjectConstruct, IRequestHandler, IRequestHandler2, IRESTRequestHandler, ISupportErrorInfo, Serializable

public class NAServer
extends Object
implements com.esri.arcgis.interop.RemoteObjRef, INAServer, INAServer2, IServerObjectExtension, ILogSupport, IObjectActivate, IObjectConstruct, IRequestHandler, IRequestHandler2, IRESTRequestHandler, ISupportErrorInfo

Deprecated as of 10.0. A MapServer object extension for performing network analysis within a stateless environment.

Remarks

At version 10.1, ArcGIS for Server no longer supports performing network analysis via local connections using the GISServer and GISClient APIs. Use the SOAP or REST API instead.

The NAServer is a MapServer object extension that can be used to perform network analysis in a stateless environment using ArcGIS for Server.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface com.esri.arcgis.system.IObjectActivate
IID, IIDe3b78022_143e_4e61_9099_ed319ec061e7, xxDummy
 
Fields inherited from interface com.esri.arcgis.system.IRequestHandler
IID46a0e2ea_3b64_4a46_bd78_88a1660f35bb
 
Fields inherited from interface com.esri.arcgis.system.IRESTRequestHandler
IID, IID9d66a418_d54a_48ed_88bd_043a25fa9c83, xxDummy
 
Constructor Summary
NAServer()
          Constructs a NAServer using ArcGIS Engine.
NAServer(Object obj)
          Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
NAServer theNAServer = (NAServer) obj;
 
Method Summary
 void activate()
          Activates the object.
 void construct(IPropertySet props)
          Two phase object construction.
 void deactivate()
          Deactivates the object.
 boolean equals(Object o)
          Compare this object with another
static String getClsid()
          getClsid.
 String[] getNALayerNames(int layerType)
          Array of network analysis layers of a particular analysis type.
 INAServerNetworkDescription getNetworkDescription(String nALayerName)
          Description of the network dataset associated with the specified network analysis layer.
 String getSchema()
          This method returns the resource hierarchy of a REST based SOE.
 INAServerSolverParams getSolverParameters(String nALayerName)
          Default solver parameters for the specified network analysis layer.
 INAServerSolverParams getSolverParameters2(String nALayerName, String layerToken, boolean populateNAClasses)
          Default solver parameters for the specified network analysis layer.
 byte[] handleBinaryRequest(byte[] request)
          Handles a binary request.
 byte[] handleBinaryRequest2(String capabilities, byte[] request)
          Handles a binary request with explicit capabilities.
 byte[] handleRESTRequest(String capabilities, String resourceName, String operationName, String operationInput, String outputFormat, String requestProperties, String[] responseProperties)
          Handles REST requests for SOE.
 String handleStringRequest(String capabilities, String request)
          Handles a SOAP string request.
 int hashCode()
          the hashcode for this object
 void init(IServerObjectHelper pSOH)
          Initializes and starts the server object specified by the IServerObjectHelper reference.
 void initLogging(ILog log)
          Initializes an object with a log.
 void interfaceSupportsErrorInfo(GUID riid)
          interfaceSupportsErrorInfo
 void shutdown()
          Stops the server object specified by the IServerObjectHelper reference.
 INAServerSolverResults solve(INAServerSolverParams nAServerSolverParams)
          Perform network analysis based on the input solve parameters.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef
getJintegraDispatch, release
 

Constructor Detail

NAServer

public NAServer()
         throws IOException,
                UnknownHostException
Constructs a NAServer using ArcGIS Engine.

Throws:
IOException - if there are interop problems
UnknownHostException - if there are interop problems

NAServer

public NAServer(Object obj)
         throws IOException
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
NAServer theNAServer = (NAServer) obj;

Construct a NAServer using a reference to such an object returned from ArcGIS Engine or Server. This is semantically equivalent to casting obj to NAServer.

Parameters:
obj - an object returned from ArcGIS Engine or Server
Throws:
IOException - if there are interop problems
Method Detail

getClsid

public static String getClsid()
getClsid.


equals

public boolean equals(Object o)
Compare this object with another

Overrides:
equals in class Object

hashCode

public int hashCode()
the hashcode for this object

Overrides:
hashCode in class Object

getNALayerNames

public String[] getNALayerNames(int layerType)
                         throws IOException,
                                AutomationException
Array of network analysis layers of a particular analysis type.

Remarks

GetNALayerNames returns an array of names of NALayers of a given type. For example, you could use this method to find the names of all of the route analysis layers in the default map of the map server.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getNALayerNames in interface INAServer
Parameters:
layerType - A com.esri.arcgis.networkanalyst.esriNAServerLayerType constant (in)
Returns:
The nALayerNames
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getNetworkDescription

public INAServerNetworkDescription getNetworkDescription(String nALayerName)
                                                  throws IOException,
                                                         AutomationException
Description of the network dataset associated with the specified network analysis layer.

Remarks

GetNetworkDescription returns an NAServerNetworkDescription object that allows you to retrieve things like the name of the network dataset as well as the sources and attributes within the network dataset.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getNetworkDescription in interface INAServer
Parameters:
nALayerName - The nALayerName (in)
Returns:
A reference to a com.esri.arcgis.networkanalyst.INAServerNetworkDescription
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSolverParameters

public INAServerSolverParams getSolverParameters(String nALayerName)
                                          throws IOException,
                                                 AutomationException
Default solver parameters for the specified network analysis layer.

Remarks

GetSolverParameters returns the NAServerSolverParams object (NAServerRouteParams, NAServerClosestFacilityParams, NAServerServiceAreaParams, NAServerLocationAllocationParams, NAServerODCostMatrixParams, NAServerVRPParams) corresponding to the NALayer name passed in. The parameter object returned will have defaults based on the NALayer it is referencing.

You can pass this resulting object into the Solve method on NAServer to perform network analysis.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getSolverParameters in interface INAServer
Parameters:
nALayerName - The nALayerName (in)
Returns:
A reference to a com.esri.arcgis.networkanalyst.INAServerSolverParams
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

solve

public INAServerSolverResults solve(INAServerSolverParams nAServerSolverParams)
                             throws IOException,
                                    AutomationException
Perform network analysis based on the input solve parameters.

Remarks

Solve performs network analysis based on the NAServerSolverParams object (NAServerRouteParams, NAServerClosestFacilityParams, NAServerServiceAreaParams) that was passed in and returns it's output through an NAServerSolverResults object (NAServerRouteResults, NAServerClosestFacilityResults, NAServerServiceAreaParams).

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
solve in interface INAServer
Parameters:
nAServerSolverParams - A reference to a com.esri.arcgis.networkanalyst.INAServerSolverParams (in)
Returns:
A reference to a com.esri.arcgis.networkanalyst.INAServerSolverResults
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSolverParameters2

public INAServerSolverParams getSolverParameters2(String nALayerName,
                                                  String layerToken,
                                                  boolean populateNAClasses)
                                           throws IOException,
                                                  AutomationException
Default solver parameters for the specified network analysis layer.

Remarks

GetSolverParameters2 returns the NAServerSolverParams object (NAServerRouteParams, NAServerClosestFacilityParams, NAServerServiceAreaParams, NAServerLocationAllocationParams, NAServerODCostMatrixParams, NAServerVRPParams) corresponding to the NALayerName and LayerToken passed in. if PopulateNAClasses was set to True, returned NAServerSolverParams instance will contain correspondent recordsets populated with content of NAClasses.

As opposed to GetSolverParameters, NAServerSolverParams instance returned by GetSolverParameters2 does not contain MapDescription and ImageDescription populated, which significantly reduces response size.

You can pass this resulting object into the Solve method on NAServer to perform network analysis.

LayerToken can be obtained from NAServerSolverResults object if the instance of NAServerSolverParams previously passed to the Solve method had SaveLayerOnServer set to True.

This method can be useful when, for example, multiple clients are working with a shared network analysis layer stored on server, or shared layer originally was created and saved on server by another client process.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getSolverParameters2 in interface INAServer2
Parameters:
nALayerName - The nALayerName (in)
layerToken - The layerToken (in)
populateNAClasses - The populateNAClasses (in)
Returns:
A reference to a com.esri.arcgis.networkanalyst.INAServerSolverParams
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

init

public void init(IServerObjectHelper pSOH)
          throws IOException,
                 AutomationException
Initializes and starts the server object specified by the IServerObjectHelper reference.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
init in interface IServerObjectExtension
Parameters:
pSOH - A reference to a com.esri.arcgis.server.IServerObjectHelper (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

shutdown

public void shutdown()
              throws IOException,
                     AutomationException
Stops the server object specified by the IServerObjectHelper reference.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
shutdown in interface IServerObjectExtension
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

initLogging

public void initLogging(ILog log)
                 throws IOException,
                        AutomationException
Initializes an object with a log.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
initLogging in interface ILogSupport
Parameters:
log - A reference to a com.esri.arcgis.system.ILog (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

activate

public void activate()
              throws IOException,
                     AutomationException
Activates the object.

Specified by:
activate in interface IObjectActivate
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

deactivate

public void deactivate()
                throws IOException,
                       AutomationException
Deactivates the object.

Specified by:
deactivate in interface IObjectActivate
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

construct

public void construct(IPropertySet props)
               throws IOException,
                      AutomationException
Two phase object construction.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
construct in interface IObjectConstruct
Parameters:
props - A reference to a com.esri.arcgis.system.IPropertySet (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

handleBinaryRequest

public byte[] handleBinaryRequest(byte[] request)
                           throws IOException,
                                  AutomationException
Handles a binary request.

Specified by:
handleBinaryRequest in interface IRequestHandler
Parameters:
request - An unsigned byte (in)
Returns:
An unsigned byte
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

handleStringRequest

public String handleStringRequest(String capabilities,
                                  String request)
                           throws IOException,
                                  AutomationException
Handles a SOAP string request.

Specified by:
handleStringRequest in interface IRequestHandler
Parameters:
capabilities - The capabilities (in)
request - The request (in)
Returns:
The response
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

handleBinaryRequest2

public byte[] handleBinaryRequest2(String capabilities,
                                   byte[] request)
                            throws IOException,
                                   AutomationException
Handles a binary request with explicit capabilities.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
handleBinaryRequest2 in interface IRequestHandler2
Parameters:
capabilities - The capabilities (in)
request - An unsigned byte (in)
Returns:
An unsigned byte
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

handleRESTRequest

public byte[] handleRESTRequest(String capabilities,
                                String resourceName,
                                String operationName,
                                String operationInput,
                                String outputFormat,
                                String requestProperties,
                                String[] responseProperties)
                         throws IOException,
                                AutomationException
Handles REST requests for SOE.

This method is invoked by ArcGIS Server's REST handler, which intercepts client's request (in URL form), parses it and passes it on to this method in form of parameter values.

The REST SOE developer must add logic to use these parameter values to determine which resource/operation is being requested and accordingly handle these requests and generate responses in the output format indicated by the "outputFormat" parameter. For more information on developing REST SOEs, please consult the Java ArcObjects Developer Guide.

Developer doc: Developing extensions > Server Object Extensions > SOE Web Services > REST Web Services > Developing SOE REST Web Services
Samples: Samples > Server Object Extensions section

Specified by:
handleRESTRequest in interface IRESTRequestHandler
Parameters:
capabilities - The capabilities supported by the SOE. An admin can choose which capabilities are enabled on a particular SOE (in ArcGIS Manager or ArcCatalog), based on certain criteria such as security roles. This list of allowed capabilities is then sent to this method, at runtime, as a comma separated list. (in)
resourceName - Name of the resource being addressed. If empty, its assumed that root resource is being addressed. (in)
operationName - Name of the operation being invoked. If empty, description of resource is returned. (in)
operationInput - Input parameters, in form of comma separated list, to the operation specified by operationName parameter. (in)
outputFormat - OutputFormat of operation. Possible formats are JSON, HTML, AMF, etc. (in)
requestProperties - The requestProperties (in)
responseProperties - The responseProperties (out)
Returns:
Output generated by the SOE
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSchema

public String getSchema()
                 throws IOException,
                        AutomationException
This method returns the resource hierarchy of a REST based SOE. This hierarchy is in JSON format as shown in the example below:

For an SOE that has a root resource (called "root") with one operation ("operation0"), and 2 sub-resources with one operation each ("operation1" and "operation2" respectively), the schema would look like:


 {
   "name": "MyRESTSOE",
   "description": "My REST SOE with 3 resources and 1 operation each.",
   "isCollection": false,
   "operations": [
   {
      "name": "operation0",
      "parameters": ["param01"],
      "supportedOutputFormats": ["json"]
    }
 ],
 "resources": [
  {
      "name": "subresource1",
      "description": "Sub Resource 1",
      "isCollection": true,
      "operations": [
       {
          "name": "operation1",
          "parameters": ["param10", "param11"],
          "supportedOutputFormats": ["json"]
       }
    ]
  },
  {
      "name": "subresource2",
      "description": "Sub Resource 2",
      "isCollection": true,
      "operations": [
       {
          "name": "operation2",
          "parameters": ["param20", "param21"],
          "supportedOutputFormats": ["json"]
       }
    ]
  }
 ]
}

Specified by:
getSchema in interface IRESTRequestHandler
Returns:
resource hierarchy of REST SOE, as String
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interfaceSupportsErrorInfo

public void interfaceSupportsErrorInfo(GUID riid)
                                throws IOException,
                                       AutomationException
interfaceSupportsErrorInfo

Description

Indicates whether the interface supports IErrorInfo.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
interfaceSupportsErrorInfo in interface ISupportErrorInfo
Parameters:
riid - A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.