Download the WAR
Pre-built WAR files are published to two locations:GitHub Releases
Download
phoss-smp-webapp-xml-*.war, phoss-smp-webapp-sql-*.war, or phoss-smp-webapp-mongodb-*.war from the release assets.Maven Central
Group ID
com.helger, artifact IDs phoss-smp-webapp-xml, phoss-smp-webapp-sql, phoss-smp-webapp-mongodb.| WAR file | Backend |
|---|---|
phoss-smp-webapp-xml-*.war | XML (file-based) |
phoss-smp-webapp-sql-*.war | SQL (MySQL/PostgreSQL/Oracle/DB2) |
phoss-smp-webapp-mongodb-*.war | MongoDB |
Deploy to Tomcat 10.1
Install Tomcat 10.1
Download and install Apache Tomcat 10.1.x from https://tomcat.apache.org/. Ensure you are using a JDK 17+ environment.
Configure encoded slash handling
Participant identifiers in the SMP REST API may contain encoded slashes (For Tomcat versions before 10, set the following JVM system property instead (the connector attribute was not available):
%2F). Tomcat 10 requires an explicit connector setting to decode them correctly.Open $CATALINA_HOME/conf/server.xml and add encodedSolidusHandling="decode" to the HTTP Connector element:Prepare the data directory
Create a directory where phoss SMP will store its runtime data (XML files, logs, etc.):Use an absolute path in production. Relative paths are resolved relative to the working directory of the Tomcat process, which varies by installation.
Create the configuration file
Copy the default Save the file to a location outside the WAR, for example
application.properties from the WAR or start from a template. At minimum, set:/etc/smp/application.properties.Point the application to your config file
Pass the config file path as a JVM system property when starting Tomcat:Add this to
$CATALINA_HOME/bin/setenv.sh (create the file if it does not exist).Deploy the WAR
Drop the WAR file into Tomcat’s webapps directory:Start or restart Tomcat:Tomcat will automatically expand the WAR and deploy the application.
Verify the deployment
Open
http://localhost:8080 in your browser (or http://localhost:8080/smp if deployed under a context path). The phoss SMP start page should appear.Default credentials are documented in the Wiki.Context path considerations
The SMP REST API generates absolute URLs for responses (for example, the service group endpoint URL returned to Access Points). When the WAR is deployed under a non-root context path such as/smp, the generated URLs must still reflect the public root URL.
Set smp.forceroot = true in application.properties to strip the context path from all generated links:
smp.forceroot is set to true in the default application.properties shipped with the XML backend. Verify the value in your configuration matches your deployment topology.Jetty 12 deployment
For local development or lightweight deployments, Jetty 12 (Jakarta EE 10 variant) is also supported. To run directly from the IDE without building a WAR, use the launcher classes in each webapp module:| Backend | Launcher class |
|---|---|
| XML | RunInJettySMPSERVER_XML in phoss-smp-webapp-xml |
| SQL | RunInJettySMPSERVER_SQL in phoss-smp-webapp-sql |
http://localhost:90. Default credentials: [email protected] / password.
For local configuration overrides without modifying committed files, create private-application.properties alongside application.properties. This file is gitignored and takes precedence over the defaults.