/
3. Pasos generales de configuración

3. Pasos generales de configuración

Pasos

Descripción 

1. Creación de la base de datos

Crear únicamente la base de datos sobre el SGBD elegido; el conjunto del esquema (tablas, claves primarias, triggers…) se creará posteriormente de manera automática en un primer despliegue, en el momento que la aplicación reconoce que no existe. El proceso va a variar ligeramente:

  • Para Oracle: En este caso el acceso y creación del esquema es por usuario. Así que será suficiente con crear un usuario para este fin con los suficientes privilegios. Este usuario será el que se indique en el fichero de configuración server.xml del Tomcat. Por ejemplo, en el caso de que el usuario fuese DashboardSII:


CREATE USER DASHBOARDSII IDENTIFIED BY DASHBOARDSII;


  • Para SqlServer: Se creará un esquema con el nombre de base de datos definido en la conexión. Por ejemplo, en el caso de que la base de datos se llamase sii:


CREATE DATABASE sii […];


  • Para MySql: Igual que en el caso de SqlServer se creará un esquema con el nombre DashboardSII:


CREATE SCHEMA DashboardSII;

2. Configuración del fichero de propiedades SIIDashboard.properties

Se copia el fichero de propiedades utilizado por el dashboard en la ruta que se desee. 

Una buena elección sería el directorio de configuración del servidor; en el caso de Apache Tomcat, el directorio ‘/conf’. Aunque podría ser en cualquier otro sitio. La ruta donde se guarde la utilizaremos más adelante para dar valor a una variable de entorno que utilizará la aplicación para recuperar el identificador del tenant. 


Por lo tanto, este fichero de propiedades tendrá básicamente una única propiedad.


sii.tenant=001

3. Configuración de la conexión con la base de datos

La configuración de la conexión a la base de datos (url, usuario, contraseña, driver…), se podrá hacer bien a través del propio contenedor web o por medio del fichero properties de la aplicación.


  • Dentro del contenedor Web 

Aunque la manera concreta de hacer esta configuración dependerá del servidor elegido, utilizaremos como ejemplo de referencia el servidor Apache Tomcat, por ser el servidor sobre el que se ha desarrollado y probado la solución.

La configuración concreta dependerá del motor de base de datos utilizado (Oracle, SqlServer o MySql). Por cada uno de ellos se definirá un pool de conexiones independiente; uno para el artefacto web y los servicios SOAP, y otro para el motor de alarmas.

  • Oracle 

Nombre del recurso JNDI exclusivo para la parte web y los servicios SOAP: jdbc/SIIOracle

Nombre del recurso JNDI exclusivo para el motor de alarmas: jdbc/SIIOracleScheduler

Para Apache Tomcat, en el fichero ‘server.xml’, dentro del bloque <GlobalNamingResources> se añade un nuevo tag <Resource> con los datos de conexión a la base de datos.


<Resource auth="Container" driverClassName="oracle.jdbc.OracleDriver" factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" maxActive="200" maxIdle="200" maxWait="-1" name="jdbc/SIIOracle" password="*****" testOnBorrow="true" type="javax.sql.DataSource" url="jdbc:oracle:thin:@//***.**.*.**:****/****" username="*******" validationQuery="select 1 from dual" validationQueryTimeout="5"/>

<Resource auth="Container" driverClassName="oracle.jdbc.OracleDriver" factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" maxActive="200" maxIdle="200" maxWait="-1" name="jdbc/SIIOracleScheduler" password="*****" testOnBorrow="true" type="javax.sql.DataSource" url="jdbc:oracle:thin:@//***.**.*.**:****/****" username="*******" validationQuery="select 1 from dual" validationQueryTimeout="5"/>


Para Apache Tomcat, en el fichero ‘context.xml’ creamos una nueva entrada <ResourceLink> dentro del bloque <Context> para referenciar la conexión a la base de datos declarada anteriormente en el fichero ‘server.xml’.


<ResourceLink global="jdbc/SIIOracle" name="jdbc/SIIOracle" type="javax.sql.DataSource"/>

<ResourceLink global="jdbc/SIIOracleScheduler" name="jdbc/SIIOracleScheduler" type="javax.sql.DataSource"/>


Si nos fijamos el valor para los atributos “global” y “name” coinciden con el nombre dado al recurso que creamos anteriormente.

Copiamos en el directorio ‘/lib’, en caso de que no exista, la librería Java de conexión a Oracle: ojdbc7.jar

  • Sql Server 

Nombre del recurso JNDI exclusivo para la parte web y los servicios SOAP: jdbc/SIISqlserver

Nombre del recurso JNDI exclusivo para el motor de alarmas: jdbc/SIISqlserverScheduler

Para Apache Tomcat, en el fichero ‘server.xml’, dentro del bloque <GlobalNamingResources> se añade un nuevo tag <Resource> con los datos de conexión a la base de datos.


<Resource auth="Container" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" initialSize="30" maxActive="300" maxIdle="250" minEvictableIdleTimeMillis="60000" minIdle="50" name="jdbc/SIISqlserver" password="*******" removeAbandoned="true" removeAbandonedTimeout="300" testOnBorrow="true" timeBetweenEvictionRunsMillis="30000" type="javax.sql.DataSource" url="jdbc:sqlserver://***.**.**.**:****;databaseName=**;user=*******;password=*******;" username="*******" validationInterval="40000" validationQuery="SELECT 1"/>

<Resource auth="Container" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" initialSize="30" maxActive="300" maxIdle="250" minEvictableIdleTimeMillis="60000" minIdle="50" name="jdbc/SIISqlserverScheduler" password="*******" removeAbandoned="true" removeAbandonedTimeout="300" testOnBorrow="true" timeBetweenEvictionRunsMillis="30000" type="javax.sql.DataSource" url="jdbc:sqlserver://***.**.**.**:****;databaseName=**;user=*******;password=*******;" username="*******" validationInterval="40000" validationQuery="SELECT 1"/> 

  

Para Apache Tomcat, en el fichero ‘context.xml’ creamos una nueva entrada <ResourceLink> dentro del bloque <Context> para referenciar la conexión a la base de datos declarada anteriormente en el fichero ‘server.xml’


<ResourceLink global="jdbc/SIISqlserver" name="jdbc/SIISqlserver" type="javax.sql.DataSource"/>

<ResourceLink global="jdbc/SIISqlserverScheduler" name="jdbc/SIISqlserverScheduler" type="javax.sql.DataSource"/>


Si nos fijamos el valor para los atributos “global” y “name” coinciden con el nombre dado al recurso que creamos anteriormente.

Copiamos en el directorio ‘/lib’, en caso de que no exista, la librería Java de conexión a SqlServer: sqljdbc4-6.0.jar

  • MySql

Nombre del recurso JNDI exclusivo para la parte web y los servicios SOAP: jdbc/SIIMySQL

Nombre del recurso JNDI exclusivo para el motor de alarmas: jdbc/SIIMySQLScheduler

Para Apache Tomcat, en el fichero ‘server.xml’, dentro del bloque <GlobalNamingResources> se añade un nuevo tag <Resource> con los datos de conexión a la base de datos.


<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" initialSize="30" maxActive="300" maxIdle="250" minEvictableIdleTimeMillis="60000" minIdle="50" name="jdbc/SIIMySQL" password="*******" removeAbandoned="true" removeAbandonedTimeout="300" testOnBorrow="true" timeBetweenEvictionRunsMillis="30000" type="javax.sql.DataSource" url="jdbc:mysql://***.***.**.**:***/DashboardSII" username="*******" validationInterval="40000" validationQuery="SELECT 1"/>

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" initialSize="30" maxActive="300" maxIdle="250" minEvictableIdleTimeMillis="60000" minIdle="50" name="jdbc/SIIMySQLScheduler" password="*******" removeAbandoned="true" removeAbandonedTimeout="300" testOnBorrow="true" timeBetweenEvictionRunsMillis="30000" type="javax.sql.DataSource" url="jdbc:mysql://***.***.**.**:***/DashboardSII" username="*******" validationInterval="40000" validationQuery="SELECT 1"/>


Para Apache Tomcat, en el fichero ‘context.xml’ creamos una nueva entrada <ResourceLink> dentro del bloque <Context> para referenciar la conexión a la base de datos declarada anteriormente en el fichero ‘server.xml’.

<ResourceLink global="jdbc/SIIMySQL" name="jdbc/SIIMySQL" type="javax.sql.DataSource"/>

<ResourceLink global="jdbc/SIIMySQLScheduler" name="jdbc/SIIMySQLScheduler" type="javax.sql.DataSource"/>

Si nos fijamos el valor para los atributos “global” y “name” coinciden con el nombre dado al recurso que creamos anteriormente.

Copiamos en el directorio ‘/lib’, en caso de que no exista, la librería Java de conexión a SqlServer: mysql-connector-java-5.1.42.jar

  • A través del fichero properties

Como manera alternativa se pueden definir los datos de conexión a la base de datos a través del fichero de propiedades ‘SII-Dashboard.properties’. En este caso las propiedades a indicar serán:

  • datasource.url : Url de conexión a la BD
  • datasource.username : Nombre de usuario de acceso a la BD
  • datasource.password: Clave de acceso a la BD
  • datasource.driver-class-name: Nombre del driver utilizado para la conexión (dependiente del motor de base de datos utilizado)

4. Declaración de la ruta al fichero de propiedades

Creamos una variable de entorno con la ruta donde se encuentra el fichero de propiedades ‘SII-Dashboard.properties’ que hemos copiado anteriormente. 

Para Apache Tomcat, en el fichero context.xml se define una nueva entrada <Environment> dentro del bloque <Context>


<Environment name="sii-dashboard-props-file-location" override="true" type="java.lang.String" value="D:/apachetomcat-8.0.36/conf/SII-Dashboard.properties"/>


La ruta completa donde está el fichero de propiedades se especifica como valor del atributo “value”

5. Declaración del perfil de BD

En el fichero de configuración ‘context.xml’ de Apache Tomcat, se define una nueva variable para indicar el perfil utilizado de acuerdo con la base de datos.


  • Para Oracle

<Environment name="spring.profiles.active" value="oracle" type="java.lang.String"/>


  • Para SqlServer
<Environment name="spring.profiles.active" value="sqlserver" type="java.lang.String"/>
  • Para MySql 
<Environment name="spring.profiles.active" value="mysql" type="java.lang.String"/> 

 6. Establecer configuraciones Java en el arranque del servidor de aplicaciones 

  • Para Windows,
set JAVA_OPTS=-“Dfile.encoding=UTF-8 –Xms256m Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=1024m”
  • Para Unix, 
set JAVA_OPTS=-Dfile.encoding=UTF-8 –Xms256m Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=1024m 

Avvale 2024