The Tomcat server requires the following configuration settings to be modified in order for FootPrints to install and run correctly:
NOTE: Detailed information about how to configure the JVM for Tomcat can be found here.
NOTE: Detailed information about configuring Tomcat can be found here.
NOTE: Restart Tomcat after making all the changes described below.
Java Virtual Machine (JVM) Memory Setting up
- Windows
-
Tomcat installed as a Windows service When Tomcat is installed as a Windows service, Tomcat is started and stopped using the Tomcat Service Wrapper. The service wrapper can be found in the "bin" folder in the Tomcat installation, .
e.g.,
C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7w.exe
- Steps:
- Start the Tomcat Service Wrapper (Tomcat7w.exe) Refer to the image below when making changes in the Tomcat Service Wrapper.
- On the Java tab add the following line to the Java Options field:
-Dfile.encoding=UTF-8
- On the next Line below -Dfile.encoding=UTF-8 add:
-XX:+UseParallelGC
Note: The parallel scavenge collector (Enabled using -XX:UseParallelGC). The algorithm is tuned for gigabyte heaps (over 10GB) on multi-CPU machines. This collection algorithm is designed to maximize throughput while minimizing pauses. It has an optional adaptive tuning policy which will automatically resize heap spaces. If you use this collector, you can only use the the original mark-sweep collector in the old generation (i.e. the newer old generation concurrent collector cannot work with this young generation collector). More Info
- In the Initial memory pool box, enter a value of 4096.
- In the Maximum memory pool box, enter a value of 8192.
NOTE: When setting the Maximum memory pool (-Xmx) value, ensure there is enough physical RAM on the server to accommodate this setting as ALL available memory of the server will be used for the Maximum memory pool setting. Therefore, a server should have 10-12GB of RAM if a Maximum memory pool setting of 8192 or more is to be used. See the System Requirements - Hardware Requirements for additional information on Maximum memory pool (-Xmx) settings. 80% is recommendation.
USING JAVA 8 FOR FootPrints VERSIONS 12.1.01 up to 20.18.03:
WARNING: Make sure there are no extra spaces at the end of any of the newly added lines. Additionally, be sure to set the Initial memory pool and Maximum memory pool values in the boxes indicated by the arrows in the image above, and DO NOT set these values using the -Xms (Initial Memory pool) and -Xmx (Maximum memory pool) in the Java Options field.
- Click "OK" to save your changes and close the dialog.
- Open the Services module on the Windows server.
- Change the "Startup Type" of the "Apache Tomcat 7.0 Tomcat7" service from "Manual" to "Automatic".
- Restart Tomcat.
8. Continue with the steps below to set URIEncoding and/or maxThreads.As part of 20.19.01 Release below are the changes that needs to be done to tomcat suggested by Logi team for OpenJdk.
- relaxedQueryChars="[]" needs to be added to connector attribute in server.xml

2. --illegal-access=permit needs to be added to JVM options.

For more details please refer to the below link
https://devnet.logianalytics.com/rdPage.aspx?rdReport=Article&dnDocID=2027
How to install Footprints 20.19.01 on Linux /Postgresql (https://bmcsites.force.com/casemgmt/sc_KnowledgeArticle?sfdcid=000166692)For tomcat 7:
Tomcat installed on Linux is started and stopped using the Tomcat startup and shutdown shell scripts. The Tomcat shell scripts are located in the "bin" folder of the Tomcat installation, .e.g.,
/usr/share/tomcat7/bin/startup.sh
/usr/share/tomcat7/bin/shutdown.sh
Steps:
- Create a new file named "setenv.sh" in the Tomcat "bin" folder. If the file already exists, go to the next step (step 2). Example location:
/usr/share/tomcat7/bin/setenv.sh
- Edit the "setenv.sh" file in the Tomcat "bin" folder and add the following lines to the end of the file:
export CATALINA_OPTS="$CATALINA_OPTS -Xms2048m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx8192m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
If any of the settings being specified are already defined, edit the existing value to use the larger value of the two possible value (either the existing value or the value defined by this article).
NOTE: When setting the Maximum memory pool (-Xmx) value, ensure there is enough physical RAM on the server to accommodate this setting as ALL available memory of the server will be used for the Maximum memory pool setting. Therefore, a server should have 10-12GB of RAM if a Maximum memory pool setting of 8192 is to be used. See the System Requirements - Hardware Requirements for additional information on Maximum memory pool (-Xmx) settings.
NOTE 2: If slow performance is being experienced on Linux-based server installations when saving items that include attachments, the following Tomcat configuration can be tried in the setenv.sh file to possibly address the issue:
export CATALINA_OPTS="$CATALINA_OPTS -Djava.security.egd=file:/dev/./urandom"
There is a known performance problem in the Java SecureRandom generation on Linux systems only. Additional details can be read here:
http://stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-java-securerandom
Beware that the tradeoff for significantly better performance is less random hashes being generated but at this point it is not believed to negatively affect the integrity of the FootPrints system. This option can be removed or reapplied at any time (provided a necessary restart of the Tomcat instance) without affecting the functionality of the system. - Save the "setenv.sh" file.
- Restart Tomcat.
- Continue with the steps below to set URIEncoding and/or maxThreads.
For Centos 7 and PostgreSQL DB to avoid failing during running BPT Import tool :
BPT export tool stores double-byte containers names as question marks on Postgres DB:Add additional parameter to tomcat's setenv.sh file ({CATALINA_HOME}/bin/setenv.sh):export LC_ALL=en_US.utf8
- Open the setenv.sh file and add a line
export JAVA_HOME=/opt/java/jdk-11.0.2 Tomcat will use OpenJDK11 (doing this will successfully deploy Footprints 20.19.01 after Footprints is installed)
Steps to be taken when upgrading Footprints from Tomcat 7 to Tomcat 8:
- For Linux Tomcat 7 and Tomcat 8.5 cannot be deployed on the same port i.e. 8080, 8005 and 8009 , so if you have Footprints installed which is prior to 20.18.03 that requires Tomcat 7 for deployment, when upgrading to the latest Footprints that requires Tomcat 8.5, Ports of Tomcat 7 needs to be changed to some other ports that are not in use by any other application eg. 8181, 8105, 8109 other
Setting URI Encoding to support UTF-8 up
To ensure search operations in FootPrints Service Core work correctly Tomcat needs to be configured to support UTF-8 encoding of GET parameters.
Additional information regarding Tomcat Character Encoding can be found here. The following steps require editing the following Tomcat server configuration file:
server.xml
"server.xml" is located in the "conf" folder of the Tomcat installation, e.g.,
Windows:
C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\server.xml
Linux:
/usr/share/tomcat7/conf/server.xml
Steps for setting URI Encoding:
- Backup the "server.xml" file before making any changes.
- Edit "server.xml".
- Locate the connector node used by the FootPrints Service Core web app. The default node will look like this:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
Modify the node and add the "URIEncoding" attribute. The node should look like this when correctly modified:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
- Save the "server.xml" file.
Max Threads up
For the best FootPrints Service Core performance, the "maxThreads" parameter in the Tomcat "server.xml" file (see URI Encoding above for file location) should be configured to increase the maximum number of allowed threads to 550.
Steps for setting Max Threads:
- Backup the "server.xml" file before making any changes.
- Edit "server.xml".
- Locate the connector node used by the FootPrints Service Core web app. The node, after successfully having set the URIEncoding, will look like this:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
Modify the node and add the "maxThreads" attribute. The node should look like this when correctly modified:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" maxThreads="550"/>
- Save the "server.xml" file.
(Optional): Enable data compression up
For optimizing network bandwidth utilization, configure Tomcat to compress response data sent to client browsers. Steps for enabling response data compression:
- Backup the "server.xml" file before making any changes.
- Edit "server.xml".
- Locate the Connector element and modify it to add the compression parameters highlighted below:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" URIEncoding="UTF-8" maxThreads="550"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/x-javascript,
application/javascript,application/xml,application/extjson,x-font/otf,application/x-font-woff,x-font/ttf,x-font/eot"
/>
- Save the "server.xml" file.
IMPORTANT: Enabling Tomcat compression does not guarantee that the data will be compressed. Response data will be compressed depending on whether the HTTP request headers coming from the client browser specify that compressed data can be handled by the client browser. Another case where Tomcat will not compress the response is when clients are accessing Tomcat through a proxy server (e.g. Apache or IIS) and the proxy has not been properly configured to support compression (i.e. include in the forwarded HTTP request headers that compressed responses are supported.) See below a sample HTTP request and response headers indicating that compression is supported and enabled.
Manage size of catalina.out file up
As the size of Tomcat's catalina.out file (found in the "logs" directory of the Tomcat installation directory) may grow rapidly and significantly (to more than 1GB in size) over time, it is recommended to take action to control the size of the file in order to keep Tomcat running without interruption and keep Tomcat performance from degrading. One of the following approaches can be implemented to control the size of the catalina.out file: NOTE: The approaches below are oriented toward an installation of Tomcat on a Linux server. If the problem occurs on a Windows server, comparable actions/approaches could be adapted for Windows, if needed.
- A shell script can be written to delete the catalina.out file each time Tomcat is restarted. The catalina.out file can also be manually deleted if it is found to be extremely large and believed to be contributing to performance degradation of Tomcat.
- The following 2 sites provide information on rotating the catalina.out file: https://dzone.com/articles/how-rotate-tomcat-catalinaout
http://www.tomcatexpert.com/knowledge-base/rotating-catalinaout-log-files
- The "logging level" that is captured by the console logger/handler can be reduced using the following steps:
- Be sure to stop the Tomcat service before proceeding.
- Make a backup copy of the tomcat_install_dir/conf/logging.properties file (i.e. /usr/share/tomcat7/conf/logging.properties).
- Open the logging.properties file for editing in vi, vim, emacs, etc. Locate the following line in the file (indicated by the red arrow):

- Change the word "FINE" to "WARNING" or "SEVERE".
- Save the catalina.out file when done editing.
- Restart Tomcat.
Max HTTP Header Size up
In Service Analytics, after adding a new field to a report and clicking on “Apply Changes” the report page may turn blank (i.e. not show anything.) The reason may be that in the communication with the FootPrints server, the size of the HTTP headers has been exceeded.
To address this situation, update the value of the maxHttpHeaderSize parameter in the Tomcat's server.xml. First set the value to "8192". If the problem persists then try increasing the value to "16384", "32768" or "65536".
Note that increasing the maxHttpHeaderSize will allocate 2 buffers (one for input and one for output) of the specified amount of memory (i.e. 8kb, 16kb, 32 kb or 65kb) per connection. The communication with the server will use up a bit more memory in this configuration but considering that connections are usually short lived it should not be of a significant issue.
Steps for setting the maxHttpHeaderSize:
- Stop Tomcat.
- Backup the current Tomcat server.xml file before making any changes.
- Edit the server.xml
- Locate the connector node used by the FootPrints application where the URIEncoding parameter is set. The node would typically look like this:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" maxThreads="550"/>
- Modify the node by adding the maxHttpHeaderSize parameter. The node should look like this when correctly modified:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" maxThreads="550" maxHttpHeaderSize="8192"/>
- Save the changed to the server.xml file.
- Start Tomcat.
Reduce Tomcat Startup time up
This procedure had time improvements on Tomcat 7 - later versions of Tomcat 8.5 and 9 may not see such a significant improvement in load times
Tomcat is scanning all folders within the application and its own folders, looking and scanning for jar files.
Simply preventing Tomcat from scanning the files is easy and we just need to modify the Catalina.properties file and set those values (comment out the lines which are not already commented out using "#" sign. The final section of the file should look exactly like this :
tomcat.util.scan.DefaultJarScanner.jarsToSkip=*
#bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,\
#annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,websocket-api.jar,\
#catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,\
#jasper.jar,jasper-el.jar,ecj-*.jar,\
#tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,\
#tomcat-jni.jar,tomcat-spdy.jar,\
#tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,\
#tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,\
#tomcat-jdbc.jar,\
#tools.jar,\
#commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,\
#commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,\
#commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,\
#commons-math*.jar,commons-pool*.jar,\
#jstl.jar,taglibs-standard-spec-*.jar,\
#geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,\
#ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,\
#jmx-tools.jar,jta*.jar,log4j.jar,log4j-1*.jar,mail*.jar,slf4j*.jar,\
#xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,\
#junit.jar,junit-.jar,hamcrest.jar,org.hamcrest*.jar,ant-launcher.jar,\
#cobertura-.jar,asm-.jar,dom4j-.jar,icu4j-.jar,jaxen-.jar,jdom-.jar,\
#jetty-.jar,oro-.jar,servlet-api-.jar,tagsoup-.jar,xmlParserAPIs-*.jar,\
#xom-*.jar
org.apache.catalina.startup.TldConfig.jarsToSkip=*
org.apache.catalina.startup.ContextConfig.jarsToSkip=*