Wie cache Antwort mit Jersey?

7

Ich versuche, eine erholsame API mit Jersey zu entwickeln. Ich habe GET APIs für eine bestimmte get-Operation, die mein GET von demselben Client nimmt. Ist es möglich, die Antwort im Cache zu speichern? Irgendwelche Zeiger werden geschätzt.

Danke

    
chiru 26.02.2013, 11:23
quelle

3 Antworten

10

Sie können CacheControl, eTag verwenden - folgen Sie dem Beispielcode

%Vor%

Ersetzen Sie resource durch Ihre Ressourceninstanz.

    
TheWhiteRabbit 26.02.2013, 11:32
quelle
5

Zusammenfassung der Lösungen:

  1. Anfrage als Methodenparameter

    Schnittstelle:

    %Vor%

    Implementierung:

    %Vor%

    Nachteile:

    • Das Implementierungsdetail Request wird verfügbar gemacht

    • Rückgabetyp Reponse ist generisch

    • fehlende Grammatik des Rückgabetyps in WADL

    • Client-Proxy unnötig Parameter Request

  2. Anfrage als Instanzvariable

    Schnittstelle:

    %Vor%

    Implementierung:

    %Vor%

    Nachteile:

    • Rückgabetyp Reponse ist generisch

    • fehlende Grammatik des Rückgabetyps in WADL

    • Abhängigkeitsinjektion mit @Context ist kompliziert, siehe Ссылка

  3. ShallowEtagHeaderFilter als Webfilter

    web.xml:

    %Vor%

    Schnittstelle:

    %Vor%

    Implementierung:

    %Vor%

    Nachteile:

    • schlechte Serverleistung, siehe JavaDoc

    • funktioniert nur bei nicht festgeschriebener Antwort

    • keine Unterstützung von schwachem ETag

  4. Benutzerdefiniert WriterInterceptor als JAX-RS Interceptor

    Interceptor:

    %Vor%

    Siehe auch: ServerCacheInterceptor (Resteasy)

    Schnittstelle:

    %Vor%

    Implementierung:

    %Vor%

    Nachteile:

    • kein vordefinierter Abfangjäger für Jersey verfügbar

    • schlechte Serverleistung

    • keine Unterstützung von schwachem ETag

    • hässlicher Workaround mit WebApplicationException

dur 06.01.2016 14:14
quelle
3

Sie können jeden Caching-Mechanismus verwenden, der für Standard-Java zusammen mit Jersey geeignet ist, wie Ehcache .

Sie müssen nur darauf achten, dass sich Ihre Daten im Backend nicht geändert haben.

Hier ist ein einfaches Beispiel mit Ehcache :

%Vor%     
flash 26.02.2013 11:31
quelle

Tags und Links