How To: Call .NET SOE using Java client at 9.3.1


Prior to ArcGIS Server 9.3.1, to use a Server Object Extension (SOE), since ArcGIS Server Java Edition does not support SOE natively, as a workaround, an SOE would have to be created in .NET, the .dll would have to be registered, and it would have to be used in Java by generating proxies using proxy-gen.

But at 9.3.1, if the same workflow as 9.2/9.3 is used and the SOE is called using IServerObjectExtensionManager.findExtensionByTypeName, an exception is thrown in the Java code.

This can be solved by following the instructions below.


  1. In your .NET SOE class, implement ESRI.ArcGIS.esriSystem.IClassID. For its two member function, put the code as:

    #region IClassID Members

    public Guid GetCLSID()
    return System.Guid.NewGuid();

    public string GetProgID()
    //Make sure this is a unique ID
    return "mysoetestid";

  2. Re-build and register the .NET SOE.
  3. From Java client, IServerObjectExtension can be obtained by calling IServerObjectExtension.findExtensionByTypeName and supplying the SOE name.