GeoSpatial Server (GSS) is an industrial-strength application that provides service-based integration technology for Smallworld products. Part of what puts the, “strength,” in, “industrial-strength,” is the fact it is deployed using Docker containers managed and orchestrated by Kubernetes.
However deployment can be a complicated affair, and in many cases we simply want to develop services without a full deployment.
Fortunately you can run GSS locally without too much effort. Here are the steps.
- Install GSS locally on top of your Smallworld Core installation.
- Change security settings for the GSS folder to ensure correct permissions are granted.
- Set the following Environment variables. You can set them any way you like (as long as you do so before starting the GSS application), but putting them in gis_aliases is a good option. Here’s an example stanza for the Cambridge DB application (remember to change the hard-coded paths to match your installation).
start_gss_camdb_vertx:
title = Smallworld Geospatial Server Cambridge DB Vertx Application
session = gss:gss_camdb_vertx_open
CONFIG_FOR_STARTUP = magikCLIConfig
product = gss
SW_CONSTRUCTION_PACK_DIR = C:/Temp
SW_ACE_DB_DIR = %SMALLWORLD_GIS%/../cambridge_db/ds/ds_admin
splash_screen = %SMALLWORLD_GIS%\sw_core\resources\base\bitmaps\smallworld_gis_splash.png
EIS_RESOURCES_PATH = D:\Beeble\docs\GE\GSS
BIFROST_URL = https://localhost:443
RABBIT_CONFIG_MODULE_NAME = gss_basic_vertx_application
RABBIT_CONFIG_FILE_NAME = empty_rabbit_config.xml
RABBITMQ_PATH = localhost
SW_GSS_UAA_CLIENT_ID = client_user
SW_GSS_UAA_CLIENT_SECRET = client_user
SW_GSS_UAA_TOKEN_URL = https://localhost:7771/uaa/oauth/token
args = -cli
SW_LAUNCH_JAVA_MEMORY = -Xmx2000m
If you want to change the port on which GSS will listen, edit the routes XML file (e.g. \gss\geospatial_server\modules\gss_basic_camdb_vertx_application\resources\base\data\gss_basic_camdb_vertx_config.xml) and change the port_number property value (shown in line 8 below) to the desired port (the default is 7771).
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configuration of the GeoSpatial Server test application on CAMDB -->
<!-- This application includes only GSS http services and only http plugin -->
<config base="gss_basic_vertx_application.gss_basic_vertx_config">
<plugins>
<plugin name="http" class_name="http_service_request_handler_plugin">
<property name="port_number" value="7771"/>
<property name="http_server" value="http_service_request_handler"/>
<property name="load_balancer_url" value="${BIFROST_URL}"/>
<property name="resources_root_dir" value="${EIS_RESOURCES_PATH}"/>
<paths>
<path string="beeble-api">
<service string="trillian" method="get" provider="beeble_service.dispatch_service" db_spec_name=""/>
<service string="zaphod" method="get" provider="beeble_service.dispatch_service" db_spec_name=""/>
</path>
</plugin>
</plugins>
</config>
You can also use an environment variable for the value of the port (e.g. value=”${LOCAL_GSS_PORT}”) and set it in a stanza in the gis_aliases file. Doing this will allow you to start multiple local GSS sessions listening on different ports simply by starting different sessions.
- Start the Smallworld session.
- Start the GSS Service Provider application.

And that’s it. You’ll have a GSS session running locally at http://localhost:7771 (or whatever port you chose) and can start developing GSS Services.