gpt4 book ai didi

java - 从 JAX-RS 服务获取资源时出错

转载 作者:行者123 更新时间:2023-11-28 22:21:58 24 4
gpt4 key购买 nike

我有一个简单的 JAX-RS 服务器应用程序:

@GET
@Path("/getImage/{key}")
@Produces("image/jpeg")
public final BufferedImage getImageResource(@PathParam("key") String key) {
final File file = new File(key); // the key will be "cat.jpeg" e.t.c.

final BufferedImage image = ImageIO.read(new FileInputStream(file));

return image;
}

将 war 文件部署到 tomcat 服务器(6.0)后,我接下来要做的是:

http://localhost:8080/resource-service/getImage/cat.png

问题:

1) 在 new File(key) 上,它将转到 tomcat 根目录。我想要在类周围的项目目录中为资源创建默认根文件夹之类的东西。

2)据我所知,不允许返回 BufferedImage,我收到 500 条错误消息:

HTTP Status 500 - Could not find MessageBodyWriter for response object of type: java.awt.image.BufferedImage of media type: image/jpeg

如果有任何建议和链接,我将不胜感激。提前致谢!

最佳答案

为了访问您的 WAR 包中的文件,您应该使用 ServletContext .首先,首先将其作为变量注入(inject)到您的类中:

@Context
ServletContext context;

然后使用以下方法查找文件:

final File file = new File(this.context.getRealPath(key));

不可能返回 BufferedImage(并将其自动映射到 image/jpeg),但在您的示例中您不需要这样做。只需返回一个 JAX-RS 响应:

@GET
@Path("/getImage/{key}")
@Produces("image/jpeg")
public final Response get(@PathParam("key") String key) {
return Response.ok()
.entity(this.context.getResourceAsStream(key))
.type("image/jpeg")
.build();
}

类似问题:Dynamically create image from JAX-RS servlet

关于java - 从 JAX-RS 服务获取资源时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844928/

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