简而言之:
pictures/pic.png
上的GET应首先由泽西岛处理,然后由tomcat本身处理304 Not Modified
。 (响应是特定于客户的)pic.png
可能需要更新。更新应该在调用图片时发生。冗长的解释:
我在给定的网址上有一张图片。图片可能需要一个参考。我想在请求时进行新鲜度检查。因此,我编写了一个处理图片URL请求的泽西资源。如有必要,它会刷新文件系统上的图片。我不想重新编写缓存机制,而是依赖于tomcat的实现。因此,我想在内部处理程序链中“转发”请求。我试过return new Viewable(sb.toString());
,但可见的不是图片。我可以使用什么返回类型?
我可以让具体图片驻留在另一个URL上并发送307(临时重定向)。总是发送它作为答案对我来说似乎很奇怪。
可能,在“GET”方法中进行更新的解决方案在设计上是错误的。可能,“PUT”/“POST”方法应该更新图片,GET应该始终由tomcat处理。
为什么题为“我怎样才能在球衣上效仿404?”的问题。功能
com.sun.jersey.config.feature.FilterForwardOn404
做了类似的事情:如果资源无法由泽西处理,它将通过过滤器/ servlet链转发。我想,我的问题与此类似。
相关问题:How to return a PNG image from Jersey REST service method to the browser
答案 0 :(得分:0)
恕我直言,处理此问题的最佳方法是不要尝试重定向客户端,而是自己获取请求的项目。你试图让球衣以一种不应该表现的方式运动。当有人为图像之类的东西打电话给休息服务时(对于休息服务而言,这不是最好的用途),你应该回应图像。因此,从它所在的任何缓存中获取它并返回它。不要让客户去拿它。
欢迎您将该图像的提取委托给您的缓存服务...
Response getImage(...) {
if(image.isNotCached()) {
... get image locally
cacheService.set(image,key);
return Response.ok().entity(<image>);
} else {
return Response.ok().entity(cacheServce.get(key);
}
}
或类似的东西