我正在使用JAVA EE 6开发一个应用程序,更具体地说,是Glassfish v3.1.2.2。
以前,我把用户上传的图片和文件放在我的数据库中。如果我想通过添加节点来集群我的架构,这将使它更容易。
现在,我真的想停止这样做,只是保存我上传的文件到我的资源文件夹(出于许多原因,例如这个),这样一个简单的<img>
或<h:graphicImage>
的名称将做的技巧。
我的问题是当我添加其他服务器时,这是如何工作的?该文件将只保存到处理请求的服务器的资源文件夹中,其他服务器不会拥有它。
现在也许有人会建议使用分布式文件系统,这听起来很棒,除非你为你的应用程序租用一些托管/云服务,你不能真正选择你的文件系统。(可能有其他原因阻止您切换到此设置)
JAVA EE是否提供任何方式透明地同步您的资源文件夹? JSF已经处理了它的版本控制和管理库等,我是否可以设置一些配置,以便我所有的服务器保持其资源文件夹与任何文件更改/上传保持最新?
如果没有,有什么替代方案?
Java EE不提供在集群的公共文件夹中同步图像的方法,您的appserver可能支持此功能,但我不知道appserver中有任何此类解决方案。
根据您的情况,我会使用NFS服务器,并保持NFS服务器目录上的文件可以从所有集群访问。
如果你不允许改变你的硬件设置,那么你可以创建一个web服务器来托管资源,你可以从所有的集群访问你的资源,如
<h:graphicImage value="http://myimageserver.local.com/sitename/foldername/xyz.gif"/>
在所有集群