[Java] Jersey: Standard-Cache-Steuerung auf Nicht-Cache


Answers

Basierend auf der Lösung von @ martin-matula habe ich zwei Cache-Annotationen erstellt. Ein @NoCache für kein Zwischenspeichern und ein @CacheMaxAge für spezifisches Zwischenspeichern. Der CacheMaxAge benötigt zwei Argumente, damit Sie die Sekunden nicht selbst berechnen müssen:

@GET
@CacheMaxAge(time = 10, unit = TimeUnit.MINUTES)
@Path("/awesome")
public String returnSomethingAwesome() {
    ...
}

Der ResourceFilter verfügt nun über diese create-Methode, die standardmäßig nicht interferiert (so dass andere Caching-Mechanismen weiterhin funktionieren):

@Override
public List<ResourceFilter> create(AbstractMethod am) {
    if (am.isAnnotationPresent(CacheMaxAge.class)) {
        CacheMaxAge maxAge = am.getAnnotation(CacheMaxAge.class);
        return newCacheFilter("max-age: " + maxAge.unit().toSeconds(maxAge.time()));
    } else if (am.isAnnotationPresent(NoCache.class)) {
        return newCacheFilter("no-cache");
    } else {
        return Collections.emptyList();
    }
}

private List<ResourceFilter> newCacheFilter(String content) {
    return Collections
            .<ResourceFilter> singletonList(new CacheResponseFilter(content));
}

Sie können die vollständige Lösung in meinem Blogpost sehen .

Danke für die Lösung Martin!

Question

Beim Erstellen eines RESTful-Webdiensts treten Probleme auf, wenn ich auf meinem Client eine Zwischenspeicherung (derzeit ein .NET-Thick-Client) aktiviere. Standardmäßig sendet Jersey keine Art von Cache Control Header, so dass der Client die meisten Seiten automatisch zwischenspeichert (was ein gültiges Verhalten zu sein scheint).

Ich würde gerne Jersey haben standardmäßig eine Cache-Kontrolle von "No-Cache", und dann insbesondere Antworten überschreiben die Cache-Kontrolle.

Gibt es eine Möglichkeit, dies mit Jersey zu tun?

Ich habe festgestellt, dass RESTeasy die @ NoCache Annotation verwenden kann, um die Einstellung für die gesamte Klasse anzugeben, aber ich habe mit Jersey nichts Ähnliches gefunden.









Links