Para lanzar un programa script que ejecute programas .jar de Java, antes tenemos que saber si existe dicho programa en memoria y las rutas necesarias a utilizar para buscar otros programas .jar para hacer funcionar nuestro programa en Java.

Si gusta la sección de programas realizados en scripts para lanzar programas, tenemos un montón que controlan servicios de los servidores, limpian log, analizan el estado de la base de datos …………….

Pero nos vamos a centrar en el 2º script y los puntos a tener en cuenta antes de ejecutar un programa en java son :

  • Clases de Java (Donde está la ruta de Java)
  • Clases de Paquetes adicionales de Java (Necesarios para el programa)
  • Clases de tú propio Paquete de Java (Ejecutar el programa)
  • Enviar parametros a nuestro programa, por ejemplo la fecha del sistema
  • Crear un fichero temporal y dar autorizaciones
  • Control de Error por Java a nuestro script para gestionar posibles errores
  • Si tenemos un error imprevisto enviar un e-mail al usuario de sistemas
  • Ejecutar el Programa Java
  • El Script se ejecuta en batch lanzado por otro script (ver post 1ª parte en categoría programación)

Antes de analizar el 2º programa o script realizado para linux o Aix, les aconsejo la lectura de la primera parte, por detallar y explicar el script que lanza a este script.


El código detallado del script es :


#!/bin/sh

#########################################################

# Si indicamos /bin/sh -x vemos las instrucciones debug

# NAME: /var/proceso/telepieza/MqLauncherPrograma.sh

# REALIZADO : Por los Programadores de Telepieza, Año 2.007

# DESCRIPCION: El programa /var/proceso/EnvioPrograma.sh lanza por batch una vez controlado todos los servicios y estado de memoria del servidor el programa script /var/proceso/telepieza/MqLauncherPrograma.sh

##########################################################

# Nombre de las variables y el porqué de su definición

# HOST : Recupera el nombre del Host para envio por e-mail

# USUARIO: Nombre Usuario para envio E-mail y autorizaciones fichero error

# PROCESO : Descripcion para colocar en el Asunto del E-Mail

# MENSAJE : Nombre de la compañia o descripción adicional

# JRE : Ruta del Java en el LINUX o AIX

# PROGMQM : Ruta principal de los programas lanzadera

# PATH : Todas las rutas para la busqueda de programas

# PROGPATH : Ruta de los programas Launcher

# MQCLASSPATH: Ruta donde están los paquetes de aplicación de Java

# LIBRARY : Librerias de Objetos adicionales para ejecutar aplicacion

# APLAPCLASSPATH : Ruta + programa inicial arranque java aplicación (main)

# BDLAPCLASSPATH : Ruta + programa conector Base de Datos en .jar

# LIBRARY : Parametros a pasar

# MQERROR : Ruta + fichero .txt para envio e-mail si existe error

# MQFHOY : Fecha inicio del proceso

# MQHORA : Hora inicio del proceso

# MQFECHA : Fecha + hora de inicio

# BDFECHA : Fecha en formato AAMMDD

# MQEMP : Variable para diferencias servidores y empresas

##############################################

HOST=`uname -n`

USUARIO=»mtproceso»

PROCESO=»Lectura de MqSeries y MySql-MqLauncherPrograma»

MENSAJE=»Telepieza 2º Programa por batch»

JRE=»/usr/java14/bin/java»

PROGMQM=»/var/proceso»

PATH=$PROGMQM:$PATH

export PATH

PROGPATH=»/var/proceso/telepieza»

MQCLASSPATH=»/usr/proceso/java/lib»

LIBRARY=-Djava.library.path=${MQCLASSPATH}

APLAPCLASSPATH=${MQCLASSPATH}/progserver.jar

BDLAPCLASSPATH=${APLAPCLASSPATH}:${MQCLASSPATH}/mysql-connector.jar

MQERROR=»${PROGPATH}/tmp/MqErrorLaunPrograma.txt»

MQFHOY=$(date +%d/%m/%Y)

MQHORA=$(date +%H:%M:%S)

MQFECHA=»${MQFHOY}-${MQHORA}»

BDFECHA=$(date +%Y%m%d)

MQEMP=»A1-A2 »

cd $PROGPATH

#######################################

# Función Envio de Informacion al usuario por e-mail ####

########################################

SalirEmail () { ### Rutina envio E-Mail

date >> $MQERROR ### Fecha

echo &HOST >> $MQERROR ### Host

echo $MENSAJE >> $MQERROR ### Mensaje

echo «Fin Proceso $0 » >> $MQERROR ### Programa

cat $MQERROR | mail -s «$PROCESO $HOST » $USUARIO

Salir

}

###################################

# Salir del Programa ####

#################################

Salir () {

FQFHOY=$(date +%d/%m/%Y) # Fecha Actual Fin Proceso

FQHORA=$(date +%H:%M:%S) # Hora Actual Fin Proceso

FQFECHA=»${FQFHOY}-${FQHORA}» # Fecha + Hora Actual

echo » ${MENSAJE} – Fecha : ${FQFECHA} » >> $MQERROR

exit

}

###########################################

# Empieza la logica del Programa ####

###########################################

if [ ! -f $MQERROR ] ### Si no existe Fichero

then

> $MQERROR ### Crea Fichero

chmod 666 $MQERROR ### Permisos de Grabar/Leer

chgrp mtproceso $MQERROR ### Grupo mtproceso

chown mtproceso $MQERROR ### Usuario mtproceso

fi

########################################################

#### Programa en Java que lee una B.D. MySQL y graba en otro servidor ###

########################################################

echo «EMPRESA : ${MQEMP} – EMPIEZA – Programa : ${0} – Fecha : ${MQFECHA}» > $MQERROR

echo «Entra en BASE DE DATOS – MqGrabarPrograma en Java -» >> $MQERROR

${JRE} ${LIBRARY} -cp ${BDLAPCLASSPATH} autoserver.mq.MqGrabarPrograma $BDFECHA $MQEMP

RC=$? # Recuperar Valor del Programa

if [ $RC -eq 9 ] # Analiza valor Error 9

then

MENSAJE=»ERROR LECTURA BASE DE DATOS FICHEROS : $RC »

SalirEmail # Envio E-Mail

fi

MENSAJE=»- ADIOS – Programa : ${0} »

Salir


Es importante entender cómo el script gestiona las variables y rutas para ejecutar un programa en java con conectores MySQL en .jar y otras aplicaciones .jar necesarias para su ejecución. Por cierto, no me puedo olvidar de la ruta principal de la maquina virtual de Java.
Los motivos de colocar todas las rutas necesarias de Java en los script, es por temas de seguridad, de esa forma te garantizas la buena ejecución de ellos.

Un Saludo de Telepieza