Skip to content
Philip Helger edited this page Aug 23, 2022 · 9 revisions

All projects of the peppol-smp-server require at least Java 1.8 (since version 5). The dependent libraries also require Java 1.8 so no way to use this with lower Java versions.

To work with the source code Eclipse is the preferred way to do so. Together with the sources, Eclipse 4.6 project files are provided. It is suggested to use the J2EE Version of Eclipse as it ships with the Maven integration (m2e) which is recommended to be used.

See Building for more details on building the sources.

Project structure

In v5.2.0 a new project structure was introduced because the internal project name changed from "peppol-smp-server" to "phoss-smp":

  • phoss-smp-backend contains all classes that are generic and not backend specific. The different backends must make use of these classes.
  • phoss-smp-backend-mongodb is the experimental MongoDB backend of the SMP server. It depends on the backend library.
  • phoss-smp-backend-sql is the (My)SQL backend of the SMP server. It depends on the backend library.
  • phoss-smp-backend-xml is the XML backend of the SMP server. It depends on the backend library.
  • phoss-smp-webapp the generic parts of the web application that are identical for all backends
  • phoss-smp-webapp-mongodb the main web application configured to use the experimental MongoDB backend
  • phoss-smp-webapp-sql the main web application configured to use the (My)SQL backend
  • phoss-smp-webapp-xml the main web application configured to use the XML backend

Old structure

Up to v5.1.2 the structure was as following. Version 5.2.0 introduced the new project name and the new submodules.

  • peppol-smp-server-library contains all classes that are generic and not backend specific. The different backends must make use of these classes.
  • peppol-smp-server-sql is the (My)SQL backend of the SMP server. It depends on the server library.
  • peppol-smp-server-xml is the XML backend of the SMP server. It depends on the server library.
  • peppol-smp-server-webapp
    • Since v5.0.1: the generic parts of the web application that are identical for all backends
    • Up to and incl. v5.0.0: is the main web application that includes both backends and you can choose from at runtime via Configuration properties
  • peppol-smp-server-webapp-sql (since v5.0.1) the main web application configured to use the (My)SQL backend
  • peppol-smp-server-webapp-xml (since v5.0.1) the main web application configured to use the XML backend

Configuration

Before you launch the application for the first time, you might want to configure it. Please read Configuration for all details. For development the default application.properties file should not be modified. Instead a new file private-application.properties (in src/main/resources) should be created that only contains the changed properties (like the keystore and truststore configuration). Due to the configuration property resolution, entries in private-application.properties have precedence over the ones in application.properties. This feature is meant to easily separate production properties from development properties.

Running locally

The peppol-smp-server-webapp-xml project is your entry to the SMP. It contains the required REST interface as well as the user interface (UI). You can even run the SMP from within Eclipse without some cumbersome Tomcat configuration. Instead run the class com.helger.peppol.smpserver.standalone.RunInJettySMPSERVER_XML which spawns an embedded Jetty and launches the application. By default the SMP listens on http://localhost:90. In case port 90 is already used on your machine, simple edit the line setPort (90) in the RunInJettySMPSERVER_XML class. To stop the running Jetty gracefully you may execute com.helger.peppol.smpserver.standalone.JettyStopSMPSERVER_XML from within Eclipse. Alternatively you may simply kill the running application and restart it.

Note: for the SQL backend the class names end with _SQL instead of _XML.

User interface

The user interface is based on my ph-oton library which uses Bootstrap 3 as the default user interface. Bootstrap was designed mobile first so the SMP GUI also works on tablets and even smartphones.