java jersey-retry-request auf SocketTimeoutException

Habe ich einen Jersey-client und umsetzen wollen, wiederholen auf SocketTimeoutException, die den Fehler sehe ich im server-log. Das code-Skelett ist unten. webtarget ist ein javax.ws.rs.client.WebTarget – Instanz mit der url-Pfad und queryparams bereits definiert. Das Problem, das ich bin vor ist, dass webtarget.request.get() nie throws SocketTimeoutException also ich kann nicht wirklich diese Ausnahme abfangen. Irgendwelche Gedanken wie kann ich eigentlich umzusetzen versuchen?

int i = 0;
Response response;
while (true) {
    try {
        response = webtarget.request().get();
        break;
    } catch (SocketTimeoutException e){
        if (i < retryNumber) {
            i++;
        } else {
            //throws some exception
        }
    }
}
  • dont Sie möchten, erhöhen die client-timeout für eine Anfrage zu vermeiden, die socket timeout exception in Erster Linie sich selbst.
InformationsquelleAutor jamesw1234 | 2016-05-15



2 Replies
  1. 3

    Landete ich herauszufinden, die Lösung. Es stellt sich heraus, das SocketTimeoutException zugeordnet ist, in eine ProcessingException tatsächlich, ausgelöst durch die Jersey-client. Also der folgende code funktionierte

    int i = 0;
    Response response;
    while (true) {
        try {
            response = webtarget.request().get();
            break;
        } catch (ProcessingException e){
            if (e.getCause() instanceof SocketTimeoutException && i < retryNumber) {
                i++;
            } else {
                //throws some exception
            }
        }
    }
  2. 0

    Ist dies nicht sinnvoll. Der server wirft SocketTimeoutException, und fängt ihn auf, und meldet es, und gibt einige HTTP-Fehler-code an den client. Es kann nicht werfen eine exception an den client.

    Müssen Sie beobachten, was die HTTP-Fehler-code zurückgegeben wird, und versuchen Sie es erneut auf diesen Zustand.

    • warum gehst du davon aus, dass die exception geworfen werden kann nur auf dem server?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.