Skip to content

Installation guide 4.x

Marten edited this page Jul 8, 2026 · 5 revisions

Option 1 - As Web application

Installation prerequisites

  • Install Java
    • Harvester was tested with JDK 25. There are several providers of JDK, including but not limited to AdoptOpenJDK.
  • Install Tomcat 11.x
    • Harvester was tested with Tomcat 11.0.22.
  • For Harvester 2.7.0 onward, we have upgraded the h2 version. To upgrade to the new Harvester and keep your current brokers/tasks:
    • Export tasks from your existing deployed Harvester
    • Rename the harvester database (see jdbc.url in hrv.properties file for the location and name)
    • Deploy Harvester 4.0.0
    • Start the web application and import the saved brokers/tasks
  • For Harvester 2.7.0 onward, if you install this version on a machine where an earlier version was hosted, you will need to rename the h2 database or put it in a different location. The 2.6.5 h2 database cannot be used with 2.7.0 onward.

Installation steps without security

  • Deploy harvester.war to Tomcat (e.g. drop harvester.war into Tomcat webapps folder)
  • Restart Tomcat if necessary
  • Open Harvester application (e.g. http://localhost:8080/harvester)
  • Run quick smoke test by following steps in Quick start guide

Custom configuration - security

Starting from 2.6.1, you can configure various authentication options such as simple, ArcGIS Portal and LDAP in Harvester. To turn on security

  • In harvester\WEB-INF\web.xml:20 – uncomment springSecurityFilterChain filter
  <filter>
   <filter-name>springSecurityFilterChain</filter-name>
   <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
   <async-supported>true</async-supported>
 </filter>
 <filter-mapping>
   <filter-name>springSecurityFilterChain</filter-name>
   <url-pattern>/*</url-pattern>
   <dispatcher>ERROR</dispatcher>
   <dispatcher>REQUEST</dispatcher>
 </filter-mapping>

Configure Harvester Authorization Server

This is mandatory configuration and it is done in WEB-INF/classes/config/hrv.properties. It is recommended to use Environment variables. Replace <server_host> with Harvester hostname.

  # Authorization Server issuer URL (can be overridden by env var HRV_ISSUER)
   security.issuer=${HRV_ISSUER:http://localhost:9000} # For local testing
    OR
  security.issuer=${HRV_ISSUER:https://<server_host>}  # For Prod deployment

   #Replace harvester with App context and localhost:8080 with server_hostname
  security.ui.redirectUri=${HRV_UI_REDIRECTURI:http://localhost:8080/harvester/callback-popup.html}  

Configure client credentials for Harvester API access.

# Admin client for API Access   
 security.api.admin.clientId=${HRV_API_ADMIN_CLIENTID:admin}

# Keep {bcrypt} prefix if you store a BCrypt-hashed secret. For plain text, prefix is {noop}. Override with HRV_API_ADMIN_CLIENTSECRET
 security.api.admin.clientSecret=${HRV_API_ADMIN_CLIENTSECRET:{noop}test}

# Read-only API client (confidential)
 security.api.read.clientId=${HRV_API_READ_CLIENTID:user}

# Keep {bcrypt} prefix if you store a BCrypt-hashed secret. For plain text, prefix is {noop}. Override with HRV_API_READ_CLIENTSECRET
 security.api.read.clientSecret=${HRV_API_READ_CLIENTSECRET:{noop}test}}
 In harvester\hrv\config.js 
   secure:true

Default authentication will be Sign with Application Account (Simple Authentication).

Select authentication provider

Harvester authentication can be configured to use either a single provider—such as Simple or LDAP—or a combination of two providers, for example, Simple/LDAP along with ArcGIS Authentication.

Configure harvester to work in a disconnected environment

  • Setup a local instance of ArcGIS JavaScript API
  • Setup a local instance of ArcGIS geometry service that is shared with everyone
  • Update ..\harvester\WEB-INF\classes\config\hrv.properties
    • Replace url for geometry service
geometry.service.url=http://servername/arcgis/rest/services/Utilities/Geometry/GeometryServer
  • Update ..\harvester\index.html
before:
  ...
  <link rel="stylesheet" href="https://js.arcgis.com/4.30/esri/css/main.css">
  <link rel="stylesheet" href="https://js.arcgis.com/3.36/esri/themes/calcite/dijit/calcite.css">
  <link rel="stylesheet" href="https://js.arcgis.com/3.36/esri/themes/calcite/esri/esri.css">
  ...
  <script src="//js.arcgis.com/3.22/"></script>
  ...
  <body class="calcite">
after:
  ...
  <link rel="stylesheet" href="http://servername/arcgis_js_api/library/4.30/4.30s/esri/css/esri.css">
  <link rel="stylesheet" href="http://servername/arcgis_js_api/library/3.36/3.36/dijit/themes/claro/claro.css">	
  <link rel="stylesheet" href="http://servername/arcgis_js_api/library/3.36/3.36/esri/css/esri.css">
  ...
  <script src="//servername/arcgis_js_api/library/3.36/3.36/"></script>
  ...    
  <body class="claro">    
    
   

Option 2 - As stand alone application

Prerequisites

  • AdoptOpenJDK 25

Installation steps

Clone this wiki locally