Skip to main content

SAMO LIDS 10 Application Server Installation

This chapter describes only differences to the version 9 installation. For complete installation guide of version 10 see Installation Guide

Standalone Installation

Individual applications must run on specific ports. If multiple applications need to run on the same host and port, nginx or a reverse proxy must be used to route traffic.

All parameters that were previously written in Tomcat properties should now be moved to environment variables (.env) or SECRET_PROPERTIES in Docker Compose.

For Windows on-premise (non-Docker) service installation (Java -jar & WinSW automation), see the dedicated guide: Windows On-Premise (SAMO 10+).


Docker Installation

Note: lids-full image is no longer available.

Docker Compose must be configured carefully because each application requires its own ports. Parameters for database, HTTP/HTTPS, and debug ports must be specified in environment variables or SECRET_PROPERTIES.

Separate Services

Two services have been separated from LIDS AS and now have their own Docker images:

SAMO License Server for SAMO 10

license-server:
image: docker.asseco-ce.com/samo/server/samo-license-server:${license_server_version}
restart: always
environment:
- samo_env_configuration=${env_configuration}
- SECRET_PROPERTIES= --ldap.password=$DEV_LDAP_PASSWORD --dataSource.password=$DEV_DATASOURCE_PASSWORD
- JAVA_OPTS=-Dserver.servlet.context-path=/license
ports:
- "${license_server_http_port}:8080"
volumes:
- ${configuration_dir:-./configuration/packages}:/usr/local/configuration
- ${env_dir:-./}:/usr/local/environment
- ${data_dir}:/usr/local/data

SAMO Security Manager for SAMO 10

samo-security-manager:
image: docker.asseco-ce.com/samo/server/samo-security-manager:${security_manager_version}
restart: always
environment:
- samo_env_configuration=${env_configuration}
- SECRET_PROPERTIES= --ldap.password=$DEV_LDAP_PASSWORD --dataSource.password=$DEV_DATASOURCE_PASSWORD
ports:
- "${security_manager_http_port}:8080"
volumes:
- ${configuration_dir:-./configuration/packages}:/usr/local/configuration
- ${env_dir:-./}:/usr/local/environment
- ${data_dir}:/usr/local/data

Note: Each service must be configured with its own ports and environment variables. Make sure SECRET_PROPERTIES are correctly set for each service.


Configuration Parameters

Database Configuration (dataSource)

Database connection properties can now be specified via .properties files or environment variables in Docker Compose.

A new parameter dataSource.property defines the prefix used to resolve the other database properties. Default:

dataSource.property=dataSource
dataSource.name=jndi:jdbc/lids
dataSource.driver=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@server.domain:1521:ORCL
dataSource.username=user
dataSource.password=<password>

Spring Boot/Tomcat connector defaults:

  • driver, url, username, password are resolved from environment properties first, then from system properties.
  • Password fallback: dataSource.password.
  • Connection pool defaults (HikariCP):

DataSource Parameter Mapping (Tomcat → New)

New ParameterReplaces Old Tomcat Parameters / CommentsDefault Value
dataSource.namedataSource.name — unchanged"defaultPool" (if not set)
dataSource.driver / driverClassNamedataSource.driver — unchangednone (required)
dataSource.usernamedataSource.username — unchangednone (required)
dataSource.passworddataSource.password — unchangednone (required)
dataSource.urldataSource.url — unchangednone (required)
dataSource.maxActivedataSource.maxActive — unchanged50
dataSource.minIdledataSource.minIdle — unchanged; if not set, initialSize is used0 (if not set, uses initialSize)
dataSource.initialSizeOnly used to populate minIdle if it is not set; initialSize no longer creates connections directly-1 (ignored if minIdle set)
dataSource.idleTimeoutReplaces a combination of timeBetweenEvictionRunsMillis + minEvictableIdleTimeMillis + indirectly testWhileIdle600000 ms (10 minutes)
dataSource.maxLifetimeNo direct equivalent; previously connections lived until explicitly closed or removed by eviction process1800000 ms (30 minutes)
dataSource.connectionTimeoutPartially replaces validationQueryTimeout, but the meaning is different: limits the wait time for a free connection from the pool30000 ms (30 seconds)
dataSource.validationQuerydataSource.validationQuery — unchangedauto-detected by driver
dataSource.validationQueryTimeoutdataSource.validationQueryTimeout — unchanged5000 ms (5 seconds)
datasource.leakDetectionThresholdNew - connection leaks detection, logs a warning if a connection is held too long. Minimal value is 2000ms (2 seconds)0 (disabled)
datasource.tcpKeepAliveNew - enables TCP keep-alive on Postgres connections by periodically sending packets to prevent timeouts.false
datasource.loginTimeoutNew - specifies the maximum time (in ms) to wait for a Postgres database login before failing.0 (disabled)

⚠️ Note: The following parameters are no longer used: rollbackOnReturn, removeAbandonedOnBorrow, removeAbandonedOnReturn, poolPreparedStatements, maxOpenPreparedStatements, numTestsPerEvictionRun, testOnBorrow, testWhileIdle.
Their functionality has either been removed or merged into new parameters (idleTimeout, connectionTimeout) and built-in HikariCP validation.


Application Ports

Each application has its own prefix (component name), e.g., authServer, userService, etc.

ParameterDefaultNotes
{component}.http.disabledfalseDisables main HTTP connector
{component}.https.enabledfalseEnables HTTPS connector
{component}.debug.enabledfalseEnables debug connector (Tomcat separate port)
{component}.http.port8080HTTP port
{component}.https.port8443HTTPS port
{component}.debug.port8000Debug port (Tomcat/JDWP)
{component}.https.certificatePath-Required if HTTPS enabled
{component}.https.certificateKeyDerived from certificate path (.key) if not explicitly provided-

Notes:

  • Boolean variables default to false.
  • Ports defaults: HTTP = 8080, HTTPS = 8443, DEBUG = 8000.
  • If HTTPS is enabled, HTTPS_CERTIFICATE_PATH must be specified. HTTPS_CERTIFICATE_KEY will default to the same path with .key extension if not explicitly set.
  • All of these can be specified as environment variables in Docker Compose:
# Example for authServer
HTTP_DISABLED=false
HTTPS_ENABLED=true
HTTPS_CERTIFICATE_PATH=/usr/local/data/common/certs/server.pem
# HTTPS_CERTIFICATE_KEY will default to /usr/local/data/common/certs/server.key
DEBUG_ENABLED=false
HTTP_PORT=8080
HTTPS_PORT=8443
DEBUG_PORT=8000

Configuration Changes

The following elements have been permanently removed from config.xml. Remove them from all existing configurations before upgrading.

RemovedLocationMigration
url, context, autodetect attributessystem.serverRemove these attributes
force attributessystem.serverRemove attribute and declare in properties (lids.server.urlForce)
<supported> child elementssystem.languageRemove all <supported> entries. Keep only the default attribute
default attributessystem.languageRemove attribute and declare in properties (lids.language.default)
<cacheLevel> elementsystem.securityRemove the element. It was already a no-op in previous versions

System modules are auto-registered

Starting with SAMO 10, the built-in HTTP modules, SOAP web services, and REST modules shipped with the Application Server are auto-registered at startup. In your project's config.xml, leave only your project-specific extensions under <services><modules>, <services><webServices>, and <restServices><modules> — delete the rest. The wrapping elements may be empty, or omitted entirely if you have no project-specific entries.

If a project's config.xml still lists a system entry (by name), the project entry is ignored and a warning is logged at startup:

WARN --- [system] config : [SAMO-16786] System HTTP module 'WFS' is redeclared in config.xml — project entry ignored.

This means it is no longer possible to override the class of a built-in module via config.xml. Customizations that previously replaced (for example) the WFS module class with a multi-storage or vendor-specific variant now silently fall back to the system implementation. Such customizations need a different mechanism — for example, registering the customized module under a project-specific name.

Minimal project config.xml snippet (only a project-specific module shown):

<services>
<modules>
<module name="MyProjectModule">
<moduleClass>com.example.MyProjectModuleImpl</moduleClass>
<service name="MyService" servletName="MyService" title="My Project Service">
<requests>
<request name="myOperation" postServletName="MyService"/>
</requests>
</service>
</module>
</modules>
<webServices/>
</services>
<restServices>
<modules/>
</restServices>

Summary

  1. All Tomcat/Spring Boot properties are now configurable via environment variables or SECRET_PROPERTIES.
  2. Database configuration uses dataSource.property prefix for lookup.
  3. Ports for HTTP, HTTPS, and debug must be unique per application.
  4. Default boolean and port values:
HTTP_DISABLED=false
HTTPS_ENABLED=false
DEBUG_ENABLED=false
HTTP_PORT=8080
HTTPS_PORT=8443
DEBUG_PORT=8000
  1. HTTPS certificate key is derived automatically if not specified.
  2. Remove unused system properties from config.xml