The Candlepin developer deploy scripts are fairly reliant on only being deployed in Apache Tomcat. Up to this point, this has been a reasonable assumption, but this page outlines necessary steps to deploy Candlepin in other servlet containers, notably Jetty.
There are several ways that we can make use of Jetty to run Candlepin:
We should hang on to our Tomcat work, as I would think that this is a likely deployment scenario, so these changes are likely driven off of a config option in the deploy script.
Modify the SSL keystore using the java keytool - I had to run this to make Jetty happy:
keytool -importkeystore -srckeystore /etc/candlepin/certs/keystore -srcstoretype PKCS12 -destkeystore /etc/candlepin/certs/java-keystore
One idea for packaging would be to package the war file as candlepin-core.rpm (or something similar), then have container specific rpms for configuring candlepin in that container - defaulting the standard candlepin.rpm to use our Jetty version (where a user could alternatively install candlepin-tomcat.rpm if that is desired).
The biggest advantage that I see is isolating any configuration to run Candlepin to our own configuration file, and not impacting other projects. This also fits more into the RHEL/Fedora convention and would likely help with integration across other services. I was not able to do any meaningful performance testing between Jetty and Tomcat, but my suspicion is that the servlet container will not play a significant role in the overall performance compared to the application, database, etc. If we choose to pursue this option further, it would be beneficial to verify that suspicion with real benchmarks.