Jetty File Structure

Jetty is very modular and configurable.  It has a small base footprint with the ability to easily enable modules for required functionality; one of its unique features is its layered configuration approach.  

This enables a base Jetty install to be configured without touching any of the files from the install.  We have extended this to three layers.  The base Jetty install (jetty\upstream), the default Rhythmyx configuration (jetty\defaults), and the customer instance specific configuration (jetty\base).

 All custom configuration should be done in jetty/base (customer specific configuration directory). However, It is not advised to do so without assistance from Percussion as it may cause unexpected behavior. The base Jetty directory(jetty\upstream) , and Rhythmyx Jetty directory (jetty\defaults) should not be modified.

Upgrades and patches will replace the contents of jetty/defaults and jetty/upstream folders; the priority of how Jetty loads in files are all files in jetty\base, jetty\defaults and lastly jetty\upstream.  

Jetty functionality Overriding

The modular nature of Jetty allows the overriding of functionality in Jetty, each configuration file in jetty\base will override those found in the defaults and upstream directory.  By default, we do not copy over every file from the other two directories into jetty\base.  However for custom configuration, those files can be copied to the jetty\base directory and changed accordingly.

Jetty Override Priority Lowest → Highest

  • jetty/upstream
  • jetty/defaults
  • jetty/base

Other important Jetty directories:

  • jetty/base/attachments  (moved from jetty/attachments in Patch 732_20171004)
    •  A temporary attachment storage used by Web Services.
  • jetty/cache  (moved from jetty/cache in Patch 732_20171004)
    • A cache folder used by Rhythmyx, can be be removed when Rhythmyx is stopped
  • jetty/base/etc
    • - Contains port configuration and SSL configuration.  This can be modified using the RhythmyxServerPropertiesEditor.exe tool.
    • perc-ds.xml  - Rhythmyx data source configuration xml file.
    • -  Properties that provides details to the Rhythmyx data source xml file and to connection properties.
    • Any custom changes to override configuration in jetty/defaults/etc and jetty/upstream/etc can be placed in here.
  • jetty/base/lib/ext
    • Additional custom instance jar files may be placed here.
  • jetty/base/lib/jdbc (added in 732_20171004)
    • This folder contains database drivers the drivers are copied to here from defaults/lib/perc pre 732_20171004.  The shipped drivers are now found in defaults/lib/jdbc
  • jetty/base/logs 
    • Percussion Log files go in here. 
  • jetty/base/resources 
    • Custom resource files that are added to the class path will be placed in here.  This is also where log4j.xml should be modified, if looking to do so.  You can copy the base log configuration from jetty/defaults/resources/log4j.xml.
  • jetty/base/start.d  
    • This is where custom enabled jetty modules should be placed, when HTTPS is configured this will contain perc-ssl.ini and https.ini.
  • jetty/base/webapps  
    • Contains any webapps enabled on the server.  The Rhythmyx folder contains the core Rhythmyx webapp and should only be modified inline with specified files that were configured previously in AppServer/server/rx/deploy/rxapp.ear/rxapp.war.  On upgrade the Rhythmyx folder is a copy of the rxapp.war folder from the existing install.  If using both Jetty and JBoss the configuration in these structures should be kept in sync.