Bamboo does not start after upgrade due to ClassNotFoundException exception
Problem
Bamboo fails to start after an upgrade. The following message is logged in <bamboo-installation-directory>/logs/catalina.out:
05-Aug-2016 09:53:08.288 WARNING [main] org.apache.catalina.startup.Catalina.load Catalina.start using conf/server.xml: Error at (34, 68) : org.apache.catalina.core.JasperListener
05-Aug-2016 09:53:08.296 SEVERE [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception
java.lang.ClassNotFoundException: org.apache.catalina.core.JasperListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:116)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1178)
Cause
This is caused because the server.xml
is misconfigured. Older releases of Bamboo used to reference this class like so:
<Listener className="org.apache.catalina.core.JasperListener" />
However, newer releases of Bamboo are shipped with different Tomcat releases and this class is no longer recognized.
Resolution
Remove the line following line from your <bamboo-installation-directory>/conf/server.xml
for Bamboo releases using Tomcat 8:
<Listener className="org.apache.catalina.core.JasperListener" />
You must not simply copy over a server.xml
from an older Bamboo version while upgrading but instead replay your changes (proxy or connector customizations) onto the server.xml
that we ship on the current release. Carefully review the differences between your customized version and the default version and re-apply your custom changes manually to prevent overwriting configuration changes between different versions of Bamboo/Tomcat.