观光来到了一个解决方案之前考虑:
- 你会来水平扩展你的web应用(即你会运行多个servlet容器实例)。
- 你期待什么样的流量?
- 图片需要更新多快(即用户更改其头像后,他们和所有其他用户是否应立即看到新头像)。
对于未水平缩放的web应用程序,可以使用文件系统作为图像存储。这很简单,可以理解,而且有效。
对于横向缩放的web应用程序,您需要将图像存储在每个servlet容器可以到达的位置。这可能是一个数据库(我不推荐这么做),S3(我推荐这个)或者一个内容仓库(我从来没有使用过其中的一个)。 S3的一个优势是它的规模很好。您可以将它放在CloudFront(亚马逊的CDN)之后,或者直接从S3服务器中卸载,并保持服务器的负载不变。
你也提到你的问题,你不能从远程客户端服务器本地资源。这是正确的,有点......我猜你正在尝试使用一些URL,如file://c:/.../image.jpg
。这不起作用。你需要做的是映射一个处理程序来提供图像。这可能看起来像
@RequestMapping(value = "/image/{name}.jpg", method = RequestMethod.GET)
public void image(@PathVariable("name") String name, HttpServletResponse response) {
// Read the image from the file system using java.io
// Write the image to the response output stream
// Even better use org.springframework.utils.FileCopyUtils
}
我检查了Jackrabbit,它看起来非常复杂,实现时间很长,找不到任何教程解释如何实现它与弹簧3 – 2011-03-14 13:25:26
[在jackrabbit网站](http://jackrabbit.apache.org/jcr-client -application-howto.html)你有这3行代码片段。这并没有比这更容易。 – eddie 2011-04-08 19:21:44