La instalación del sistema completo implica la instalación de una
base de datos y tres aplicaciones web,
oness-party-webapp.war
,
oness-inventory-webapp.war
y
oness-order-webapp.war
, en un contenedor web o
servidor de aplicaciones. Las instrucciones concretas varían para cada
servidor, por lo que se pondrán como ejemplo las correspondientes a la
implementación de referencia Tomcat.
El funcionamiento de la siguientes bases de datos ha sido probado con el proyecto.
MySQL 4.0.13-Max bajo Windows
MySQL 4.0.15-Max bajo Linux
PostgreSQL 7.4.5 bajo Cygwin en Windows
MS SQL 2000
HSQLDB 1.7.2, esta versión NO es compatible con el software dado que no soporta niveles de aislamiento entre transacciones.
Culquiera de ellas excepto HSQLDB podría ser usada así como cualquier otra soportada por Hibernate, en cuyo sitio web http://www.hibernate.org/80.html se puede encontrar la lista de compatibilidades. Entre los sistemas soportados se encuentran, además de los anteriores, otros como DB2, Oracle, Informix o Sybase.
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”.