Mikhail Kryshen
UserConfig — event listener for Tomcat
Host lifecycle event listener for Apache Tomcat 6.0 to automatically deploy update and undeploy applications from user home directories.
This is a rewrite of org.apache.catalina.startup.UserConfig listener included in Tomcat which adds the following features:
- multiple web applications for each user,
- automatic application deployment,
- on UNIX use getent to read network user database.
Installation
Copy userconfig.jar to Tomcat lib directory. Add Listener to the Host element in the Tomcat configuration file (server.xml).
Listener that uses passwd database to list users:
<Listener className="kryshen.catalina.userconfig.PasswdUserConfig"/>
Listener that considers all home directories in the specified base directory:
<Listener className="kryshen.catalina.userconfig.HomesUserConfig"/>
Note: UserConfig starts all user applications at server startup. It may take more than 2 minutes to start 1000 applications from NFS on decent hardware.
Listener properties
- Common
- directoryName — base directory for web applications inside user's home directory. Default: "public_webapps".
- appsPerUser — maximum number of application each user is allowed to deploy. If greater than 1 or equals -1 (multi-app mode) each user's application subdirectory in the base directory is mapped to "/~username/application", "ROOT" is mapped to "/~username". In single-app mode (appsPerUser = 1) the base directory is mapped to "/~username". Default: -1 (unlimited).
- PasswdUserConfig
- passwd — path to local passwd file. Default: "/etc/passwd".
- getent — path to getent program. Local passwd is used if this is not set. Default: not set (null).
- HomesUserConfig
- homeBase — base directory for user homes. Default: "/home".
Example
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"
backgroundProcessorDelay="15">
<Listener className="kryshen.catalina.userconfig.PasswdUserConfig"
getent="/usr/bin/getent" directoryName="public_html"
appsPerUser="5"/>
</Host>
Download
License: Apache License, Version 2.0