File javaee,EJBs文件处理
我正在开发一个web应用程序,允许用户上传图片,然后系统将为他们生成拇指 我的问题在于EJB可以分布在多个服务器上,因此不允许直接处理文件。我可以将图像存储在数据库中,但我希望将它们作为文件存储在其中一台服务器中。我该怎么做?有没有办法集中存储文件?或者用EJB处理JavaEE中的文件File javaee,EJBs文件处理,file,jakarta-ee,ejb,storage,File,Jakarta Ee,Ejb,Storage,我正在开发一个web应用程序,允许用户上传图片,然后系统将为他们生成拇指 我的问题在于EJB可以分布在多个服务器上,因此不允许直接处理文件。我可以将图像存储在数据库中,但我希望将它们作为文件存储在其中一台服务器中。我该怎么做?有没有办法集中存储文件?或者用EJB处理JavaEE中的文件 目前,我正在数据库中存储我的文件。所以我可以集中访问,不需要专用的文件服务器。我这样做是因为我不知道如何集成ftp服务器和EJB。然而,这是一个好的选择吗 我想要的是:使用无状态EJB,将上传的图像存储为文件,
目前,我正在数据库中存储我的文件。所以我可以集中访问,不需要专用的文件服务器。我这样做是因为我不知道如何集成ftp服务器和EJB。然而,这是一个好的选择吗 我想要的是:使用无状态EJB,将上传的图像存储为文件,并将其路径存储在数据库中。所以我可以使用
<h:graphicImage ... />
您可能需要为此使用(专用)FTP服务器。您的ejbbean可以联系此服务器来存储和检索文件
Java中有各种用于访问FTP服务器的库。特别适合在EJB环境中使用的是基于JCA的FTP连接器,但“普通”的连接器通常也可以正常工作。您还可以研究使用一个。赛门铁克的Veritas群集文件系统是我有经验的两个。这些产品允许您跨多个服务器装载相同的文件系统以进行读/写访问。应用程序看到的只是另一个目录。如果您的环境已经有了必要的组件(SAN和良好的系统管理),那么在许多用例中,这可能是性能最好的解决方案 然而,这种方法也有缺点:
如果您能够对EJB实例的“位置”做出合理的假设,那么直接处理文件就没有问题。在你的情况下(因为你想有文件),我会读到一个本地临时文件夹的图像,并上传到一个远程目标 一种可能的方法是使用JCA事务适配器处理ftp连接。在xml中配置工厂,并将连接注入bean,就可以开始了
根据您的应用服务器,可能会有一个特殊的连接器可用(例如:Oracle或IBM systems)我建议您坚持使用当前的解决方案。Ftp访问(如果不只是为了保存文件而需要)可以构建在ejb层之上。显示存储在DB中的图像不是问题,简单的servlet就可以做到这一点。您可以:
这里实际上有四个方面
如果有疑问,请购买更多ram;)特别是缩略图非常容易缓存,在Tomcat中也能提供良好的性能-如果您不熟悉多线程,请在google上查找缓存。还可以自然缓存实体,而不仅仅是文件。您能给我推荐任何基于JCA的FTP连接器吗?我对连接器不太了解。有关于这方面的教程吗?每年上传的容量/数量是多少?以及每次上传生成的缩略图数量?@Thomas big numbers,这对我的解决方案有什么影响?首先,根据文件系统中的限制构造文件(目录)-我们的EXT3已满。然后再考虑维护和性能,如果您选择软启动,至少要为SAN制定计划。我猜,做数学,数据库中当然没有二进制图像。问题是我如何实际存储文件,因为EJB被禁止访问或持久保存文件。我也不明白为什么将图像存储为文件和数据库实体。JAVA EE 6非常支持带有JPA规范的ORM,但似乎我需要第三方库来分布式存储文件。我正在研究Shamit建议的WebDAV,但我认为应用服务器中应该包含如此重要的功能,那么为什么EJB不能访问文件系统呢?就我们的JBoss而言,这并不是禁止的。电阻