2013-03-09 75 views
0

我正在开发一个应用程序,使用JAVA EE 6,更具体地说,Glassfish v3.1.2.2。JAVA EE 6集群和webapp图像

之前,我习惯把用户uploded图像和文件在我的数据库。如果我想通过添加节点将我的体系结构集群化,这将使它更容易。

现在,我真的想停止这样做,只是我上传的文件保存到我的资源文件夹(原因是多方面的such as this),这样一个简单的<img><h:graphicImage>一个名字就可以了。

我的问题是怎么做,当我添加其他的服务器这项工作?该文件将只保存到处理该请求的服务器资源文件夹中,其他服务器不会拥有它。

现在也许有人会建议使用分布式文件系统,你在哪里租你的应用程序一些托管/云服务这听起来除了在大的情况下,你不能真正选择自己的文件系统。 (可能有其他原因阻止您转到此设置)

是否JAVA EE提供了透明地同步资源文件夹的方法? JSF已经可以处理它的版本控制和管理库等任何机会,我可以设置一些配置,这样我的所有服务器都可以通过任何文件更改/上传保持资源文件夹的最新状态?

如果不是,有什么替代方案?

+0

我还没有跟团的工作我自己,但是从我读可能是最好的选择是在一个专用的服务器(通常是Apache的,因为它被认为是快) – SJuan76 2013-03-09 23:35:33

+0

你有一个云服务的一个例子,设置静态资源让你运行你的应用程序集群,但是没有任何实际的节点间通信方式?这听起来像是有些武断的限制。 (另外,我认为一个流行的 - 如果可能是不必要的昂贵 - 解决方案就是将它们放到S3或其他类型的CDN上,这些CDN应该提供某种API来上传新文件。) – millimoose 2013-03-09 23:55:56

+0

作为毫无保留的状态,我也会选择对于像Amazon S3这样的[Content Delivery Network](http://en.wikipedia.org/wiki/Content_delivery_network)解决方案(免责声明:我不以任何方式与亚马逊合作)。 – 2013-03-10 00:36:42

回答

0

的Java EE并没有提供一种方式,用于集群的公共文件夹同步您的图片,你的应用服务器可以支持的东西这一点,但我不知道在任何应用服务器这样的解决方案。

根据您的情况我会用一个NFS服务器,并保持从所有群集访问的NFS服务器目录中的文件。

如果你不能改变你的硬件设置,那么你可以创建一个web服务器来托管资源,你可以从所有的集群访问您的资源,如,

<h:graphicImage value="http://myimageserver.local.com/sitename/foldername/xyz.gif"/>所有群集中。

+1

如果不使用某种形式的分布式文件系统OP,不想使用分布式文件系统,那么当集群节点在不同的机器上运行时(如同标准用例)那样,你将如何去做? – fvu 2013-03-09 23:45:53

+0

如果我的节点运行在不同的机器或虚拟环境中,我无法创建符号链接。 – arg20 2013-03-09 23:47:54

+0

我不知何故错过了你的帖子,你没有使用dsitributed系统或NFS。我猜资源服务器是你的选择。 – 2013-03-09 23:51:19