one of the few questions (with answers)私はJAX-RSとキャッシングに関してSOを見つけましたが、レスポンスオブジェクトにいくつかの値を設定することで、キャッシングのためのETagsを生成することができます。問題は、それは、我々は両方のSOAPのために同じ方法を使用するので、私たちのために働くと@WebMethod(SOAP)を持つメソッドに注釈を付けることで、RESTサービスはありませんResponseオブジェクトに頼らずにJAX-RSを使ってETagsを設定することはできますか?
@GET
@Path("/person/{id}")
public Response getPerson(@PathParam("id") String name, @Context 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();
}
、@GET(および次のようにサービスを公開するために必要なものは何でも)。以前のサービスは、(ヘッダの作成を除く)私たちに次のようになります。
@WebMethod
@GET
@Path("/person/{id}")
public Person getPerson(@WebParam(name="id") @PathParam("id") String name){
return _dao.getPerson(name);
}
どのような方法があります - いくつかの余分な設定を通して - これらのヘッダを設定するの? Responseオブジェクトを使用すると実際には自動変換に比べていくつかの利点があることがわかったのは初めてです...
私たちはApache CXFを使用しています。
何らかのインターセプターを使用できますか? http://stackoverflow.com/questions/3165647/apache-cxf-how-to-add-custom-http-header-to-jax-rs-response?rq=1 – oligofren