2011-01-26 79 views
0

我想將CacheControl信息添加到使用json綁定的GET服務。 我發現到cacheControl添加到響應REST服務的聲音是這樣的:使用Jersey和json實現的HTTP CacheControl

@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() 

} 

,但我有一個產生JSON消息的REST服務和球衣庫從Java轉換automaticcally的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() 
} 

Jersey的攔截器會自動將您的類轉換爲JSON對象。

相關問題