Páginas de error personalizadas en Glassfish

Las páginas de error que vienen por defecto en Glassfish muestran en el pie de página la versión que se está ejecutando del servidor de aplicaciones. Esto ya es un buen motivo para dejar de utilizarlas y crear páginas de error personalizadas. Simplemente copiar el código HTML de la página de error de Glassfish y eliminar la versión ya es suficiente para crear nuestras páginas de error.

El cambio lo podemos hacer a nivel global de dominio o por aplicación. Para hacerlo a nivel de dominio se debe crear una nueva propiedad en el virtual server send-error_N donde N aumentará conforme creemos las páginas de error ( send-error_1, send-error_2…) con el valor:

code=ERROR_CODE path=/ruta/pagina/de/error reason=Resource_not_found

Por ejemplo:

  • Nombre: send-error_1
  • Valor: code=404 path=/glassfish/domains/domain1/docroot/404.htm reason=Resource_not_found

The first component, code, specifies the three-digit HTTP response status code for which the custom error page should be returned in the response.

The second component, path, specifies the absolute or relative file system path of the custom error page. A relative file system path is interpreted as relative to the domain-dir/config directory.

The third component, reason, is optional and specifies the text of the reason string (such as Unauthorized or Forbidden) to be returned.

Documentación de Oracle.

La propiedad se puede añadir manualmente en el domain.xml, aunque requiere reinicio:

<virtual-server [...]>
[...]
<property name="send-error_1" value="/glassfish/domains/domain1/docroot/404.htm reason=Resource_not_found"/>
[...]
</virtual-server>

Así que es mejor hacerlo con el comando «asadmin» o a través de la consola web de administración:

# asadmin
asadmin> set server.http-service.virtual-server.server.property.send-error_1="/glassfish/domains/domain1/docroot/404.htm reason=Resource_not_found"

Y desde la consola de administración:

glassfish error personalizado