Apéndice B. Instalación

B.1. Instalación

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.

B.2. Instalación de la base de datos

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.

B.3. Instalación en Tomcat

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" 1
    docBase="${catalina.home}/webapps/oness-party-webapp.war" 2
    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" 3
        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> 4
            <value></value>
        </parameter>
        <parameter>
            <name>password</name> 5
            <value></value>
        </parameter>
        <!-- Class name for JDBC driver -->
        <parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value> 6
        </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> 7
        </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>
1

Url en la que estará disponible la aplicación dentro del servidor

2

Ubicación del fichero war

3

Dialecto de Hibernate para el gestor de base de datos utilizado

4

Usuario de la base de datos

5

Contraseña de la base de datos

6

Clase del driver JDBC para el gestor de base de datos

7

Url de la base de datos

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”.

Ejemplo B.2. Propiedades de la fuente de datos DBCP para MySQL

dataSource.username=1
dataSource.password=2
dataSource.url=jdbc:mysql:///test3
dataSource.driverClassName=com.mysql.jdbc.Driver4
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect5
1

Nombre de usuario en la base de datos

2

Contraseña en la base de datos

3

URL de la base de datos, depende de cada gestor

4

Nombre de la clase controladora JBDC, depende de cada gestor

5

Dialecto del gestor de la base de datos, proporcionado por Hibernate