【发布时间】:2013-03-09 23:31:11
【问题描述】:
我正在使用 JAVA EE 6 开发应用程序,更具体地说,是 Glassfish v3.1.2.2。
以前,我曾经将用户上传的图像和文件放在我的数据库中。如果我想通过添加节点来集群化我的架构,这会更容易。
现在,我真的很想停止这样做,而只是将我上传的文件保存到我的资源文件夹(出于多种原因such as this),这样一个简单的<img> 或@987654324 @ 有名字就可以了。
我的问题是当我添加其他服务器时这是如何工作的?该文件只会保存到处理请求的服务器的资源文件夹中,其他服务器不会有它。
现在也许有人会建议使用分布式文件系统,这听起来不错,除非您正在为您的应用租用一些托管/云服务并且您无法真正选择您的文件系统。 (可能有其他原因阻止您使用此设置)
JAVA EE 是否提供任何透明同步资源文件夹的方法? JSF 已经处理它的版本控制和管理库等,我可以设置一些配置,以便我的所有服务器保留它们的资源文件夹最新的任何文件更改/上传?
如果没有,有什么替代方案?
【问题讨论】:
-
我自己没有使用过集群,但据我所知,最好的选择可能是在专用服务器中设置静态资源(通常是 apache,因为它被认为更快)
-
您是否有一个云服务示例,可以让您运行应用程序集群,但无法在节点之间进行实际通信?这听起来有点武断的限制。 (另外,我认为一个流行的——如果可能是不必要的昂贵——的解决方案是将这些推送到 S3 或其他类型的 CDN,它应该提供某种 API 来上传新文件。)
-
正如 millimoose 所说,我也会选择像 Amazon S3 这样的Content Delivery Network 解决方案(免责声明:我不工作也不与亚马逊有任何关系)。
-
虽然 JAVA EE 平台不支持开箱即用,这不是很奇怪吗?我在这里错过了什么吗?也许我只是没有清楚地看到我应该做事的方式。也许是第三方扩展或非标准化解决方案?来自 Jboss 或任何其他供应商的东西?
标签: jsf jakarta-ee servlets glassfish java-ee-6