Microprofile to the rescue

Microprofile includes in its scope a specification helping you to handle your fallback logic in a "standard" way. The specification allows to define a fallback method reference or handler on a method in case this last one fails. Here what it can look like:

@Fallback(method = "getDataFallback")
public Data getData() {
    return client.target("http://server1.company.com")               .request(APPLICATION_JSON_TYPE)               .get(Data.Class);
}private Data getDataFallback() {    return new Data(...);}

Here, you will call getData from all the consumers of the enclosing service, and if the method fails, the microprofile fallback handling will automatically call getDataFallback.

This implementation also supports @Retry, which allows you to define ...

Get Java EE 8 High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.