La instalación en Tomcat 4.x o 5.x conlleva copiar los ficheros war en el directorio TOMCAT_HOME/webapps y configurar la base de datos que se utilizará. Por defecto esta configuración se obtendrá via JNDI, con lo que no será necesario modificar los ficheros war.
En el entorno JNDI deben estar disponibles una variable de entorno con nombre net.sf.oness.common.model.hibernateDialect y cuyo valor debe ser el dialecto de Hibernate para el gestor de base de datos utilizado, y una fuente de datos bajo el nombre jdbc/oness de donde obtener las conexiones con la base de datos. Para configurar el entorno JNDI en Tomcat se debe crear un fichero xml para cada war y con el mismo nombre en el directorio TOMCAT_HOME/webapps, si se trata de Tomcat 4.x, o TOMCAT_HOME/conf/Catalina/localhost, si la versión es 5.x. El contenido de cada uno de estos ficheros xml se puede ver en el Ejemplo B.1, “Configuración de la aplicación web en Tomcat utilizando JNDI”. También podría utilizarse una configuración global para todas las aplicaciones, lo que implicaría modificar el fichero de configuración del servidor, por lo que no será tratada aquí, pudiendo consultarse la documentación de Tomcat.
Ejemplo B.1. Configuración de la aplicación web en Tomcat utilizando JNDI
<!-- To setup this context copy this file to the specified directory and change it to match your needs. You may rename it if you want. o Tomcat 4: TOMCAT_HOME/webapps o Tomcat 5: TOMCAT_HOME/conf/Catalina/localhost --> <Context path="/oness-party-webapp" docBase="${catalina.home}/webapps/oness-party-webapp.war" debug="99" reloadable="true"> <!-- To use a global jndi datasource uncomment the <ResourceLink> tag and move the other entries to your server.xml under <GlobalNamingResources> --> <!-- <ResourceLink name="jdbc/oness" global="jdbc/oness" type="javax.sql.DataSource"/> --> <Environment description="Hibernate dialect" name="net.sf.oness.common.model.hibernateDialect" value="net.sf.hibernate.dialect.MySQLDialect" type="java.lang.String"/> <Resource name="jdbc/oness" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/oness"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit. --> <parameter> <name>maxActive</name> <value>100</value> </parameter> <!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit. --> <parameter> <name>maxIdle</name> <value>30</value> </parameter> <!-- Maximum time to wait for a dB connection to become available in ms, in this example 10 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. --> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <!-- MySQL dB username and password for dB connections --> <parameter> <name>username</name> <value></value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <!-- Class name for JDBC driver --> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <!-- Autocommit setting. This setting is required to make Hibernate work. Or you can remove calls to commit(). --> <parameter> <name>defaultAutoCommit</name> <value>false</value> </parameter> <!-- The JDBC connection url for connecting to your MySQL dB. The autoReconnect=true argument to the url makes sure that the mm.mysql JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours. --> <parameter> <name>url</name> <value>jdbc:mysql://localhost/test</value> </parameter> <!-- Recover abandoned connections --> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <!-- Set the number of seconds a dB connection has been idle before it is considered abandoned. --> <parameter> <name>removeAbandonedTimeout</name> <value>60</value> </parameter> <!-- Log a stack trace of the code which abandoned the dB connection resources. --> <parameter> <name>logAbandoned</name> <value>true</value> </parameter> </ResourceParams> </Context>
La alternativa a utilizar JNDI pasaría por modificar el descriptor de aplicación web web.xml dentro del fichero war, cambiando el valor applicationContext-oness-common-model-dataSource-jndi.xml por applicationContext-oness-common-model-dataSource-dbcp.xml, y añadiendo al classpath un fichero llamado dataSource.properties con mayor precedencia que el fichero oness-common-model-x.x.jar, por ejemplo ubicándolo en el directorio classes de la aplicación web. El contenido de este fichero para configurar una base de datos MySQL se puede ver en el Ejemplo B.2, “Propiedades de la fuente de datos DBCP para MySQL”.