Database

MapStore supports 3 types of database:

In a production environment, the H2 database is NOT RECOMMENDED.

In the following section the user can see how to configure a postgreSQL database ready for production. For oracle configuration or for other advanced options please refer the official documentation

Creation

To create and configure the database for MapStore in postgreSQL, you will need to:

  • Create the schema and the tables, using the script available here
# Usually you have a postgres user that can execute these commands
sudo su postgres

# Create the database and user
psql -U postgres -c "CREATE DATABASE geostore;"
psql -U postgres -c "CREATE user geostore LOGIN PASSWORD 'geostore' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;"

# Download the sql script files
wget https://raw.githubusercontent.com/geosolutions-it/geostore/master/doc/sql/001_setup_db.sql
wget https://raw.githubusercontent.com/geosolutions-it/geostore/master/doc/sql/002_create_schema_postgres.sql

# execute the SQL scripts
psql -U postgres -d geostore -f ./001_setup_db.sql
psql -h localhost -U geostore -d geostore -f ./002_create_schema_postgres.sql
  • make you sure that the user geostore has access to the database from the address of MapStore application. You can give permission by editing pg_hba.conf

For instance, if your MapStore is hosted on 192.168.12.10, you can provide the access adding this line to pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    geostore        geostore        192.168.12.10/32        md5

Configuration

In the WEB-INF/classes directory of mapstore.war you can find a file named geostore-datasource-ovr.properties that contains the database configuration.

Here a sample setup for postgreSQL:

# Setup driver and dialect for PostgreSQL database
geostoreDataSource.driverClassName=org.postgresql.Driver
geostoreVendorAdapter.databasePlatform=org.hibernate.dialect.PostgreSQLDialect

# Connection parameters
geostoreDataSource.url=jdbc:postgresql://192.168.12.100:5432/geostore
geostoreDataSource.username=geostore
geostoreDataSource.password=geostore
geostoreEntityManagerFactory.jpaPropertyMap[hibernate.default_schema]=geostore

# Automatic create-update database mode
geostoreEntityManagerFactory.jpaPropertyMap[hibernate.hbm2ddl.auto]=validate

# Other options
geostoreVendorAdapter.generateDdl=true
geostoreVendorAdapter.showSql=false

Note

Editing these files directly is not suggested because it may be cancelled on the next re-deploy of mapstore.war (for instance due to an update).

For this reason MapStore allows you to configure a system property named geostore-ovr to pass to the JVM with the path to the file to use for the configuration above. In the next sections the externalization will be explained more in detail.

# here the path to the ovr file
GEOSTORE_OVR_FILE=file:///var/lib/tomcat/conf/geostore-ovr.properties

# add the env. variable 'geostore-ovr' to JAVA_OPTS
JAVA_OPTS="-Dgeostore-ovr=$GEOSTORE_OVR_FILE [other opts]"