.. _health_checks: ************* Health Checks ************* Create default Health Check --------------------------- The functional interface ``HealthCheck`` together with the annotations ``@Liveness`` and ``@Readiness`` are the key concepts to bring up a new health check. Following code snipping shows a very basic example on how to use the interface. The parameter ``isDefault`` with value ``true`` makes sure that this health check is covered during server startup (see section :ref:`Settings ` in administration guide) and exposed to ``/health``. .. code-block:: java @Liveness(isDefault = true) public class SampleHealthCheck implements HealthCheck{ @Override public HealthCheckResponse call() { return HealthCheckResponse.named("sample-default") .state(true) .withData("key", "value") .build(); } } .. important:: Make sure to use ``@Liveness`` and ``@Readiness`` from package ``io.ox.proxy.health.impl`` otherwise health checks could not be registered. Create custom Health Check Endpoint ----------------------------------- To create a health check which should not be exposed via ``/health`` ``/health/live`` or ``/health/ready`` change health check´s default to ``false``, create a new resource class with proper ``@PATH`` annotation and send health check´s response back to caller. Custom Health Check: .. code-block:: java @Liveness(isDefault = false) public class SampleHealthCheck implements HealthCheck{ @Override public HealthCheckResponse call() { return HealthCheckResponse.named("sample-custom") .state(true) .withData("key", "value") .build(); } } Custom Endpoint: .. code-block:: java @Path("/custom") public class SampleResource { @Path("/sample") @GET @Produces(MediaType.APPLICATION_JSON) public Response getCallHealthCheck() { // The Health Check to call return Response.ok().entity(new SampleHealthCheck().call()).build(); } } .. important:: The ``SampleHealthCheck`` class can be placed in a package of your choise but make sure to place ``SampleResource`` in package ``io.ox.proxy.jersey.resource`` otherwise this resource could not be bind to JAX-RS context.