gpt4 book ai didi

tomcat - 我如何在 Jersey 上模拟 404 上的前锋?

转载 作者:行者123 更新时间:2023-11-28 23:50:11 30 4
gpt4 key购买 nike

问题简而言之:

  • pictures/pic.png 上的 GET 应首先由 Jersey 处理,然后由 tomcat 本身处理
  • 原因:
    1. tomcat 知道何时发送 304 Not Modified。 (响应是特定于客户的)
    2. pic.png 可能需要更新。更新应该在调用图片时发生。

详细解释:

我在给定的 URL 上有一张图片。图片可能需要引用。我想在请求时进行新鲜度检查。因此,我编写了一个 Jersey 资源来处理图片 URL 上的请求。如有必要,它会刷新文件系统上的图片。我不想重新编写缓存机制,而是依赖于 tomcat 的实现。因此,我想在内部处理程序链中“转发”请求。我试过 return new Viewable(sb.toString());,但 viewable 不是图片。我可以使用什么返回类型?

我可以让具体图片驻留在另一个 URL 上并发送 307(临时重定向)。总是将其作为答案发送对我来说似乎很奇怪。

可能,在“GET”方法中进行更新的解决方案在设计上是错误的。可能,“PUT”/“POST”方法应该更新图片,而 GET 应该始终由 tomcat 处理。

为什么这个问题的标题是“我如何在 404 in jersey 上模拟前锋?”。特点com.sun.jersey.config.feature.FilterForwardOn404 做了类似的事情:如果资源不能由 jersey 处理,则通过过滤器/servlet 链转发。我想,我的问题与此类似。

相关问题:How to return a PNG image from Jersey REST service method to the browser

最佳答案

恕我直言,处理此问题的最佳方法不是尝试重定向客户端,而是自行获取请求的项目。你试图让 Jersey 以一种它不应该表现的方式表现。当有人为图像之类的东西调用休息服务时(无论如何,这并不是休息服务的最佳用途)你应该用图像来回应。所以从它所在的任何缓存中获取它并返回它。不要让客户去拿。

欢迎您将该图像的获取委托(delegate)给您的缓存服务......

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);
}
}

或者类似的东西

关于tomcat - 我如何在 Jersey 上模拟 404 上的前锋?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966518/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com