Class WebApplicationException

java.lang.Object
	java.lang.Throwable
		java.lang.Exception
			java.lang.RuntimeException
				javax.ws.rs.WebApplicationException

All Implemented Interfaces:

Serializable

Direct Known Subclasses:

ClientErrorException, RedirectionException, ServerErrorException

When is WebApplicationException being thrown?

Throwable
└── RuntimeException
    └── WebApplicationException
        ├── ClientErrorException       (for 4xx)
        │   ├── BadRequestException        (400)
        │   ├── NotAuthorizedException     (401)
        │   ├── ForbiddenException         (403)
        │   └── NotFoundException          (404)
        └── ServerErrorException       (for 5xx)
            ├── InternalServerErrorException (500)
            ├── ServiceUnavailableException (503)

WebApplicationException — What It Catches

Thrown by the Keycloak Admin Client when Keycloak returns an HTTP error (non-2xx) response.

🛠️ Catches all HTTP errors:

Category Status Codes Common Causes
Client errors (4xx) 400 – Bad Request401 – Unauthorized403 – Forbidden404 – Not Found409 – Conflict Invalid input, missing/expired token, no permission, not found, user already exists
Server errors (5xx) 500 – Internal Server Error503 – Service Unavailable Keycloak server crash, overload, config issues

🧠 Key facts


✅ Usage Example

try {
    userResource.get("user-id").toRepresentation(); // throws if 404, 403, etc.
} catch (WebApplicationException e) {
    int status = e.getResponse().getStatus();
    String body = e.getResponse().readEntity(String.class);
    log.error("Keycloak error {}: {}", status, body);
}