Apache Tomcat plugin for Grails supported by SpringSource
100% of Grails users
Dependency :
build ":tomcat:7.0.39"
Summary
Makes Tomcat 7.0 the default servlet container for Grails at development time.
Description
This plugin makes Tomcat the default development server for Grails. To install in Grails versions before 2.3 add this to BuildConfig.groovy:To install in Grails 2.3, add this to BuildConfig.groovy:The regular Grails commands like run-app etc. will operate against Tomcat instead of Jetty. No other installation of an external Tomcat distribution is required.These can then be looked up by configuring an appropriate Spring bean in @grails-app/conf/resources.groovy@:Note if you deploy to a standalone Tomcat instance then these with need to be configured in your Tomcat context.xml file as per the Tomcat documentationTo undeploy run:Note you will need to configure permissions in your tomcat-users.xml directory such as:You can then need to specify the username/password (and potentially url) in your Config.groovy file:And the configuration in Config.groovy looks like
(or)
build ":tomcat:$grailsVersion"
build ':tomcat:7.0.39'
Configuration Options
- tomcat.deploy.username - The username of the remote tomcat to deploy to
- tomcat.deploy.password - The password for the remote tomcat to deploy to
- tomcat.deploy.url - The remote tomcat deploy URL
- tomcat.scan.enabled (since 2.0.1) - Where Servlet 3.0 annotation classpath scanning is enabled (false by default). Note that enabling this setting will require you to significantly increase your memory settings as the Servlet 3.0 scanning feature consumes a large amount of memory.
- tomcat.scan.excludes (since 2.0.1) - If class path scanning is enabled, what jars to limit
- tomcat.nio - Whether to enable the Tomcat New IO connector
- tomcat.keystorePath - The path to the Tomcat keystore for HTTPS
- tomcat.keystorePassword - The password for the keystore for HTTPS
- grails.tomcat.jvmArgs - Any JVM arguments to pass to the isolated Tomcat instance used for run-war
- tomcat.startupTimeoutSecs - The time to wait for startup for the isolated Tomcat instance
JNDI
You can specify JNDI naming entries to be used by the embedded Tomcat in yourgrails-app/conf/Config.groovy file:grails.naming.entries = ['jdbc/mydb': [ type: "javax.sql.DataSource", //required auth: "Container", // optional description: "Data source for ...", //optional //properties for particular type of resource url: "jdbc:oracle:thin:@dbserver:1521:DBNAME", username: "dbuser", password: "secret", driverClassName: "oracle.jdbc.driver.OracleDriver", maxActive: "8", //and so on maxIdle: "4" ] ]
beans = {
xmlns jee:"http://www.springframework.org/schema/jee"
jee.'jndi-lookup'(id:"myDbDataSource", 'jndi-name':"java:comp/env/jdbc/mydb")
}Remote Deployment
The plugin features remote deployment Gant scripts. To deploy the current Grails application simply run:grails tomcat deploy
grails tomcat undeploy
<role rolename="manager"/> <user username="manager" password="secret" roles="standard,manager"/>
tomcat.deploy.username="manager" tomcat.deploy.password="secret" tomcat.deploy.url="http://myserver.com/manager"
Tomcat 7
If you are using Tomcat 7, ensure the user has the manager-script role<user username="manager" password="secret" roles="manager-script" />
tomcat.deploy.username="manager" tomcat.deploy.password="secret" tomcat.deploy.url="http://myserver.com/manager/text"
Using jvmArgs property
In <app>/conf/BuildConfig.groovy one has to place the property as shown below:The properties are given only for reference as an example and please do optimize as per your requirement
grails.tomcat.jvmArgs = ["-server", "-XX:MaxPermSize=512m", "-XX:MaxNewSize=256m", "-XX:NewSize=256m", "-Xms768m", "-Xmx1024m", "-XX:SurvivorRatio=128", "-XX:MaxTenuringThreshold=0", "-XX:+UseTLAB", "-XX:+UseConcMarkSweepGC", "-XX:+CMSClassUnloadingEnabled", "-XX:+CMSIncrementalMode", "-XX:-UseGCOverheadLimit", "-XX:+ExplicitGCInvokesConcurrent"]
grails{
tomcat{
jvmArgs = ["-server", "-XX:MaxPermSize=512m", "-XX:MaxNewSize=256m", "-XX:NewSize=256m",
"-Xms768m", "-Xmx1024m", "-XX:SurvivorRatio=128", "-XX:MaxTenuringThreshold=0",
"-XX:+UseTLAB", "-XX:+UseConcMarkSweepGC", "-XX:+CMSClassUnloadingEnabled",
"-XX:+CMSIncrementalMode", "-XX:-UseGCOverheadLimit", "-XX:+ExplicitGCInvokesConcurrent"]
}
}