Crear servicio para Socket Java

Hace poco desarrollando una pequeña aplicación en Java, el cual consistía en el manejo de un Socket me vi en la necesidad de ver la forma de como asociar este Socket a un servicio ya que iba a manejar “n” servicios, y todo esto sobre un servidor Linux.

Como sabemos cada vez que se crea un proceso o servicio en Linux, este recae o se asocia a un PID el cual es guardado en un archivo en una ruta especifica, entonces veremos como asociar este Socket a un PID y dado el panorama al tener varios Sockets tendremos varios PID’s. Entonces para esto asumimos que ya tenemos nuestra aplicación compilada, en mi caso tendré la clase (compilada) del servicio en la ruta “/home/nachxs/bin/classes” y ademas manejaremos un JDK el cual lo tengo instalado en “/opt/jdk_1.6.0”, una vez definido esto solo creamos un script el cual contiene lo siguiente:

#! /bin/bash
. /etc/init.d/functions

RETVAL=$?
PATH_SERVICE=/home/nachxs/bin/classes
PATH=.:/opt/jdk1.6.0/bin:/usr/bin
export PATH_SERVICE
export PATH

start(){
   echo -n $"Iniciando servicios"
   exec java -Xrs -cp $PATH_SERVICE org.servicio.Servidor01 /dev/null 2>&1 &
   echo $! > /var/run/Servicio01.pid
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   return $RETVAL
}

stop(){
    echo -n "Deteniendo servicios"
    kill -15  `cat /var/run/Servicio01.pid`
    rm -rf /var/run/Servicio01.pid
    RETVAL=$?	[ $RETVAL -eq 0 ] && success || failure
    echo
    return $RETVAL
}

case "$1" in
   start)
          start
          ;;
   stop)
          stop
          ;;
   restart|reload)
          stop
          start
;;
   *)
   echo $"Usage: $0 {start|stop|restart|reload}"
   exit 1
;;
esac

exit 0
exit $RETVAL

Entonces como se podran dar cuenta, tenemos “seteado” el PATH_SERVICE y el PATH con las ruta indicada anteriormente, ahora solo nos quedaria dar permiso de ejecucion al script y listo. Al ejecutar el script este creara el Socket al puerto que hayan definido en su clase y este asociado a un PID. Ahora si queremos tener varios servicios asociados a diferentes Sockets solo tendriamos que adaptar el script para cada servicio.