There is a process already using the admin port 4848. Glassfish 4/CentOS 6.

El servidor de aplicaciones Glassfish 4.1 de un cliente no quería arrancar y mandaba el mensaje de error especificado en la siguiente imagen:

El servidor corre el sistema operativo CentOS 6 y al inspeccionar los puertos para ver que proceso estaba utilizando el puerto indicado en el mensaje, el 4848, indicaba que ningún proceso estaba ocupando dicho puerto. Así que quedó descartado que fuera otra instancia de Glassfish ejecutándose en la misma máquina.

El problema era que la máquina del cliente no tenía en su archivo /etc/hosts el hostname de su servidor. Para obtener el nombre del hostname.

Así que bastó con editar el archivo /etc/hosts y añadir al final de la IP 127.0.0.1 el hostname del servidor.

Con el comando hostname obtenemos el nombre del servidor. El archivo /etc/hosts debería más o menos quedar así:

Donde HOSTNAME es el nombre del servidor obtenido con el comando hostname.

¡Hasta la próxima!

 

 

Cómo añadir o restar horas, minutos o segundos a una fecha en java con la clase Calendar

A veces es necesario, en nuestros programas java, incrementar o restar de una fecha en cierta cantidad de horas, minutos o segundos. Usando la clase Calendar de este lenguaje es muy sencillo hacer este tipo de operaciones con el tiempo.

Aquí les dejo el código auto-explicativo:

Al ejecutar el código anterior dará la siguiente salida (dependiendo de la hora en que sea ejecutado):

Espero y les sea útil.

¡Hasta la próxima!

 

Dar formato a una fecha con String.format() de java usando un Calendar.

El siguiente código usa la clase Calendar para almacenar la fecha y hora actual y dar formato a dicha fecha usando el método format() de la clase String:

Ejecutando el código anterior mostrará como resultado la fecha con el siguiente formato:

¡Espero les sea útil! ¡Saludos!

Rellenar con espacios a la derecha un texto con java.

En ocasiones queremos generar un texto de un ancho fijo y rellenar con espacios los caracteres que no son utilizados o ocupados por la cadena de caracteres que contiene, por ejemplo, tenemos una cadena con el contenido “ABC” y queremos generar una cadena de 10 caracteres con el texto “ABC” cargado a la izquierda, y el resto de los caracteres a la derecha, rellenarlos con espacios.

Para eso podemos usar el método format de la clase String, de esta forma:

El código anterior arrojaría el siguiente resultado:

Los corchetes cuadrados se agregaron para apreciar los espacios en la cadena de texto.

Si quisiéramos usar este mismo método para rellenar con otro caracter, usaríamos el método replace de la clase String para reemplazar los espacios por el caracter deseado; así:

Lo que daría como resultado:

Si en lugar de usar el formato “%-10s” en el método format, usáramos “%10s” los espacios y/o asteriscos, aparecerían  a la izquierda del texto.

Les dejo de tarea este ejercicio.

Espero y les sea útil este tip. ¡Saludos!

 

 

Problema con JasperSoft Studio 6.3.0 y Ubuntu 16.04: SWTException: Failed to execute runnable

Recién actualice mi PC a Ubuntu Xenial (16.04) mi JasperSoft Studio 6.3.0 comenzó a tener fallos, no “pintaba” bien la interfaz gráfica y algunos textos desaparecían, así como de pronto se congelaba y el CPU mostraba alto consumo en el proceso java. También otro síntoma es que la conexiones no funcionaban y las consultas que utilizaban los reportes no se cargaban en la edición gráfica.

El archivo .log de JasperSoft Studio mostraba la excepción SWTException continuamente.

El problema se debe a que ésta nueva versión LTS de Ubuntu utiliza la versión 3 de GTK y la versión de Eclipse que utiliza el JasperSoft Studio no es compatible o tiene conflictos con esta versión.

La solución es editar el archivo .ini de JasperSoft Studio que se encuentra dentro de la carpeta donde se instaló este, y agregar las líneas que se muestran en negrita antes del parámetro -vm:

Otra solución es establecer la variable de ambiente SWT_GTK3 en el archivo runubuntu.sh que se encuentra dentro de la carpeta de instalación; de esta forma:

Si se opta por ésta última solución, es necesario arrancar el JasperSoft Studio ejecutando este archivo y no el archivo binario Jasper Studio.

¡Visita los patrocinadores para tener más tips de estos!

¡Gracias y saludos!

Obtener la fecha actual en java con la clase Calendar.

A partir de java 7 los métodos para obtener el día, mes y año de una fecha han quedado obsoletos o en desuso y podrán desaparecer en futuras versiones.

Lo que recomiendan es el uso de la clase Calendar para obtener estos datos. Enseguida un pequeño ejemplo de cómo obtener la fecha (“AAAA-MM-DD”) con la clase Calendar de java:

Observe el +1 al obtener el mes. Calendar.MONTH regresa el número de mes pero a partir de 0, por eso la necesidad de aumentar en uno para obtener el mes correctamente.

Espero y les sea útil. ¡Saludos!

Aprendiendo Java paso a paso.

Excelente taller de Java publicado por Carlos Santana Roldán en el sitio de  CodeJobs. Lo recomiendo para todo aquel que quiera aprender Java.

Argumento listas de longitud variable en Java.

Desde Java 5.0, los métodos pueden tener un argumento lista de longitud variable. Son llamados métodos varargs. El último argumento de esos métodos y sólo el último argumento puede ser repetido cero o más veces cuando el método es llamado. El parámetro vararg puede ser primitivo o un objeto. Los puntos suspensivos (…) son usados en el argumento lista de firma del método para declararlo método vararg.

La sintaxis de parámetro vararg es como sigue:

type… nombreObjetoOPrimitivo

 

El método main en Java

Para crear aplicaciones Java ejecutables es necesario crear una clase con un método cuya firma (nombre y argumentos del método) coincidan con el método main como el siguiente:

El método main debe cumplir las siguientes reglas:

  • El método debe ser marcado como un método publico (modificador de acceso public).
  • El método debe ser marcado como un método estático (modificador de no acceso static).
  • El método se debe llamar main.
  • El método no debe regresar ningún valor, debe regresar el tipo void.
  • El método debe aceptar un argumento de método de tipo arreglo String o un argumento variable de tipo String. El nombre del parámetro pude ser cualquier nombre válido.

Ejemplos de definiciones del método main válidos e inválidos:

Si ejecutamos  la clase HolaMundo:

java HolaMundo

regresará el siguiente texto:

Hola Mundo

La siguiente clase HolaMundoConParametros:

Si ejecutamos con:

java HolaMundoConParametros uno dos

Regresaría:

uno
dos

Los parámetros que son pasados al método main también son llamados parámetros o valores de linea de comando, ya que son pasados desde una linea de comando.

 

 

¿Todas las clases Java son ejecutables?

No. La Máquina Virtual de Java (JVM) no puede ejecutar cualquier clase Java. La JVM sólo puede ejecutar aquella clase que tenga definido un método main. Una aplicación está compuesta por una gran variedad de clases e interfaces, pero para utilizar éstas clases e interfaces debe existir una clase que tenga definido el método main. El método main es el punto de entrada o de ejecución de una aplicación Java. El código en éste método es el primer código que se ejecuta y éste utilizará el resto de las clases de la aplicación.

ClaseEjecutableJava