arg*_*g20 3 storage ejb file java-ee
我正在开发一个允许用户上传图片的Web应用程序,系统将为他们生成拇指.
我的问题依赖于EJB可以分布在多个服务器上,因此不允许直接处理文件.我可以将图像存储在数据库中,但我希望将它们作为文件存储在其中一个服务器中.我怎样才能做到这一点?有没有办法集中存储文件?或者使用EJB处理Java EE中的文件的任何方法?
目前,我将我的文件存储在数据库中.所以我有集中访问权限,我不需要专用的文件服务器.我这样做是因为我不知道如何集成ftp服务器和EJB.这是一个很好的选择吗?
我想要的是:使用无状态EJB,将上传的图像作为文件存储,并将数据库中的路径存储在文件中.所以我可以使用它来显示它们
<h:graphicImage ... />
Run Code Online (Sandbox Code Playgroud)
你实际上有四个方面,
由于您已经拥有Java EE服务器,因此您可能还有一个(HTTP)servlet服务器,其中有多种方法可以进行负载平衡和缓存,更不用说基于Web的交互的潜在可能性.如果有的话,支持使用目录观察程序进行FTP传输作为奖励.
您不应该使用无状态会话bean创建缩略图,这意味着您的服务器将在高峰时间处于废话状态 - 服务器将优先考虑建立新连接的商务逻辑.相反,首先接收并将文件+原始实体存储在数据库中,然后使用服务bean来排队创建缩略图(如果需要,可以使用n个工作线程或消息队列).在某些情况下你也可以使用本机工具,我们在linux中使用.
您应该使用共享文件系统SAN,它是跨多台计算机共享文件的正确工具.并根据文件系统的限制构建文件 - 例如每个目录的文件数和读/写容量.
只要你没有用大二进制blob杀死它,单个数据库对于至少一个小集群来说就足够了.
如果有疑问,请购买更多ram;)特别是缩略图非常可缓存,并且在Tomcat中也会提供良好的性能 - 如果您不熟悉多线程,请在google上找到缓存.还可以自然地缓存实体,而不仅仅是文件.