Как использовать CXF, JAX-RS и Кэширование HTTP

Документация CXF упоминает, что кэшировалась как Усовершенствованный HTTP:

CXF JAXRS оказывает поддержку для многих усовершенствованных функций HTTP путем обработки Если-соответствия, If-Modified-Since и заголовков Завершающих тегов. Объект контекста Запроса JAXRS может использоваться для проверки предварительных условий. Варьируйтесь, CacheControl, Cookie и Cookie Набора также поддерживаются.

Я действительно интересуюсь использованием (или по крайней мере исследование) эти функции. Однако, в то время как "обеспечивает, поддержка" звучит действительно интересной, это не особенно полезно в реализовании таких опций. Какая-либо справка или указатели о том, как использовать If-Modified-Since, CacheControl или Завершающие теги?

17
задан sfussenegger 18 January 2010 в 11:03
поделиться

1 ответ

-

На самом деле, ответ не специфичен для CXF - это чистый JAX-RS:

// IPersonService.java
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;

@GET
@Path("/person/{id}")
Response getPerson(@PathParam("id") String id, @Context Request request);


// PersonServiceImpl.java
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;

public Response getPerson(String name, Request request) {
  Person person = _dao.getPerson(name);

  if (person == null) {
    return Response.noContent().build();
  }

  EntityTag eTag = new EntityTag(person.getUUID() + "-" + person.getVersion());

  CacheControl cc = new CacheControl();
  cc.setMaxAge(600);

  ResponseBuilder builder = request.evaluatePreconditions(person.getUpdated(), eTag);

  if (builder == null) {
    builder = Response.ok(person);
  }

  return builder.cacheControl(cc).lastModified(person.getUpdated()).build();
}
27
ответ дан 30 November 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: