2011-01-26 4 views
0

Я хочу добавить инкрементацию CacheControl в службу GET, которая использует привязку json. я обнаружил, что добавить CacheControl в ответ на звук REST службы, как это:HTTP CacheControl с реализацией Джерси и json

@GET 
@Path("cacheheadertest") 
@Produces({"*/*"}) 
def testcache():javax.ws.rs.core.Response { 
    val rb:Response.ResponseBuilder = javax.ws.rs.core.Response.ok("chached test message") 
    val cc = new CacheControl() 
    cc.setMaxAge(60) 
    cc.setNoCache(false) 
    rb.cacheControl(cc).build() 

} 

, но у меня есть службы REST, которые производят JSon сообщений и библиотеку джерси преобразования automaticcally объект Java из Java в XML/JSON ,

@GET 
@Path("jsontestcache") 
@Produces(Array(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML)) 
def myjsontestservice(@HeaderParam("X-TOKENID") tokenId: String, 
@QueryParam("clientId") clientId: String):com.test.MyResultClass = { 
val response= new com.test.MyResultClass 
[...] 

response 
} 

Как добавить элемент управления кэшем в ответ службы myjsontestservice? Нужно ли использовать фильтр и добавлять кеш-контроль после того, как ответ был создан трикотажем? thanks million Flavio

ответ

2

Вам все равно нужно вернуть объект Response.

def somejson() : Response = { 
    val builder = Response.ok(new com.test.MyResultClass); 
    val cc = new CacheControl() 
    cc.setMaxAge(60) 
    cc.setNoCache(false) 
    builder.cacheControl(cc).build() 
} 

Перехватчики Джерси автоматически преобразуют ваш класс в объект JSON.

 Смежные вопросы

  • Нет связанных вопросов^_^