Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Installs and configures the Tomcat, Java servlet engine and webserver.



  • CentOS, Red Hat, Fedora (OpenJDK)

The following Opscode cookbooks are dependencies:

  • java, ark, maven


  • prefix_dir - /usr/local/, /var/lib/, etc.


  • default.rb -- installs tomcat via debian package only on a debian based distribution. Otherwise installs via tomcat7_binary.rb
  • package.rb -- installs tomcat7 unless node['tomcat']['version'] set to 6. The package typically installs a system service.
  • ark.rb installs a vanilla tomcat and creates a service
  • base.rb installs the tomcat from the binary provided by, will use version 7 unless node['tomcat']['version'] set to 6. No tomcat service is installed.

All of the default webapps such as "ROOT" and "manager" are removed in the tomcat::ark recipe


This recipe creates a vanilla tomcat installation based on the tarball of bytecode available from and places it in ${prefix_dir}. Additionally, it configures a system v init script and creates the symlink

${prefix_dir}/tomcat/default -> ${prefix_dir}/tomcat/tomcat{6,7}


It creates an installation of tomcat to prefix_dir. It does very little besides that.

By default it uses the tomcat 7 by including tomcat7 recipe

This recipe is intended to be used together with the CATALINA_BASE method to install multiple tomcat instances that use the same set of tomcat installation files. This recipe does not add any services. It is intended to be used together with the tomcat lwrp.

${prefix_dir}/tomcat/tomcat{6,7}  # CATALINA_HOME

and creates a symlink to that directory

${prefix_dir}/tomcat/default -> ${prefix_dir}/tomcat/tomcat{6,7}




  • :install: install
  • :remove: remove the instance

Attribute Parameters

  • http_port: port_num or true/false, default to true and 8080
  • ajp_port: port_num or true/false, default to true and 8009
  • shutdown_port: port_num or true/false, default to 8005
  • host_name: name for Host element, defaults to localhost
  • session_timeout: global session timeout set in conf/web.xml
  • unpack_wars: defaults to true
  • auto_deploy: defaults to true
  • jvm_opts: Array of options for the JVM
  • jmx_opts: Array of JMX monitoring options
  • jmx_access: String containing username and access permissions, will be written to the jmxremote.access file
  • jmx_password: String containing username and password, will be written to the jmxremote.password file
  • jmx_access_file: the file that the access role and permissions will be written to, defaults to CATALINA_BASE/conf/jmxremote.access
  • jmx_password_file: the file that the username and password will be written to, defaults to CATALINA_BASE/conf/jmxremote.password
  • manage_config_file: whether to update the configuration files /etc/default/app_name, CATALINA_BASE/conf/server.xml, and /etc/init.d/app_name after initial creation. If false, those files will not be changed after initial templating. Useful if you have devs who want control of their tomcat instance but don't want to learn chef. Great for massive configuration drift.
  • webapp_opts: (Deprecated) Array of directives passed to a webapp
  • more_opts: (Deprecated) crap that doesn't fit anywhere else
  • service_name: an alternate name for the init script, useful if you are using a clustering tool like Pacemaker or heartbeat to manage the tomcat service
  • clustered: set to true if you do not want the tomcat service to start automatically, defaults to false
  • env: environment variables to export in init script
  • user: user to run the tomcat as
  • shutdown_wait: how long the shutdown script should wait before killing the process

An exception will be thrown if one of the values specified by *_port is already in use by another tomcat lwrp


tomcat "pentaho" do
  http_port  false
  https_port "8443"
  version    "7"

To deploy a webapp to the new tomcat, you use a deploy resource or a maven resource (coming soon).

Example using JMX

tomcat "liferay" do
  user liferay_user
  action :install
  jvm_opts node['liferay']['jvm_opts']
  jmx_opts node['liferay']['jmx_opts']
  jmx_access node['liferay']['jmx_access']
  jmx_password node['liferay']['jmx_password']

Clustered configuration

tomcat "liferay" do
  user liferay_user
  action :install
  jvm_opts node['liferay']['jvm_opts']
  service_name "liferay-tomcat"
  clustered true


License and Author

Author:: Bryan W. Berry (

Copyright:: 2012, Bryan W. Berry

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


No description, website, or topics provided.




No releases published


No packages published

Contributors 4