Alternate Primrose Configuration for Tomcat versions 5.5 and above

   Tomcat website

Note for new users - this method is an alternative. Before you choose it, make sure you are aware of the "normal" install process, defined in the guides below :
Tomcat v5.5 and above ::: Tomcat v5.0 and below

This configuration method allows you to load all pools, using just one <Resource> tag entry in server.xml. It will not bind each pool under java:comp/env, but will provide access to the pools like the example below.

Note that this approach is not right for everyone, because it means that you have to write some Primrose-Specific code in your applications, but is provided in case this suits some people.

Below is an example of how you might use this approach. Note that 'AllPrimrosePools' must be the JNDI name specified in the server.xml ; and 'myPoolName' must be a pool defined in the primrose.config file.

public static Connection getPrimroseConnection() throws Exception {
	InitialContext ctx = new InitialContext();
	PoolLoader pl = (PoolLoader)ctx.lookup("java:comp/env/AllPrimrosePools");
	Pool myPool = pl.findExistingPool("myPoolName");
	if (myPool != null) {
		return myPool.getConnection();
	} else {
		// Can't find pool ... handle error
		throw new Exception("Cannot find pool");
	}
}
 

There are 3 main steps for enabling primrose to run within Tomcat.

  1. Install jar file

    Copy primrose.jar into Tomcat's user lib directory (eg TOMCAT_HOME/common/lib in v5.5 or TOMCAT_HOME/lib in v6)

  2. Configure server.xml to load primrose:

    Under GlobalNamingResources tag in server.xml, define a pool loader, and a web console. There are two sections to add :
    • Tell Tomcat to load all pools

      
      	<!-- Tell Tomcat to load all the pools in the defined config file -->
      	<Resource
      		name="AllPrimrosePools" auth="Container"
      		type="uk.org.primrose.pool.core.PoolLoader"
      		description="The examplePool database pool"
      		factory="uk.org.primrose.vendor.tomcat.NoJndiLoaderFactory"
      
      		primroseConfigFile="/usr/tomcat/conf/primrose.config"
      
      	/>
      
      
      				
      Make sure that the primroseConfigFile exists, and is configured correctly (see primroseConfig.html).

    • Define an webconsole to provide web access to all pools (optional)

      
      	<!-- Define a webconsole to provide web access to all pools (optional) -->
      	<Resource
      		name="webconsole" auth="Container"
      		type="uk.org.primrose.vendor.tomcat.WebConsoleFactory"
      		description="The primrose web console pool monitor"
      		factory="uk.org.primrose.vendor.tomcat.WebConsoleFactory"
      
      		username="admin"
      		password="admin"
      		port="8090"
      		logFile="/usr/tomcat/logs/wbconsole.log"
      		logLevel="verbose,info,warn,error,crisis"
      
      	/>
      				
      Make sure that the logFile directory exists, and can be written to by tomcat.
      Also make sure that the port is available.
      You may password protect the webconsole - if you not wish to, then just leave out the username and password elements.

  3. Configure server.xml to link the configured pools to your webapps:

    At the end of your Host tag, add/alter the Context tags :
    		<Context path="/RequestServices" debug="0" reloadable="true" crossContext="true">
    			<ResourceLink
    				global="AllPrimrosePools"
    				name="AllPrimrosePools"
    				type="uk.org.primrose.pool.core.PoolLoader"/>
    		</Context>
    				
Tomcat should now be configured successfully to run primrose.