我有一个JavaEE应用程序需要访问文件以获取有关安装的某些信息。EJB中全局访问的属性
此访问是只读的,我不需要在应用程序内更改该文件,即我不需要直接“文件”,只需要它的内容(一个字节数组)。
使用文件系统的EJB存在限制。我确实了解与此相关的问题,但我无法找出解决方案。
文件路径应该由用户配置,但不需要跟踪对文件内容的更改。一旦加载,它将保持不变,除非用户选择另一个文件。所以,我无法将它打包在应用程序存档中。
这种基于文件的方法是很久以前由我们拥有的一些遗留系统做出的决定。现在没有可行的方法来改变它,即我需要我的JavaEE应用程序使用该文件(至少一次)来加载它的内容。
另一个限制是该文件不能保存在数据库中。
我该如何做到这一点,而不违反文件系统访问的EJB限制?
我想过用户上传文件到服务器,然后在服务器上保存这些信息。但我该怎么做?该信息应该是全局可访问的,包括服务器的多个实例(例如,在集群体系结构中)。
用户应该配置一次该文件(不一定在主应用程序内,它可能是其他应用程序只是配置此)。即使服务器重新启动,仍然可以访问文件的内容,而无需用户进一步配置。
我在GlassFish v2.1.1服务器上使用EJB 3.0规范的JavaEE 5。
谢谢, Thiago。
有趣的需求,为什么你不能坚持数据库中的数据?用户现在是否将文件上传到每个集群成员? – home
我无法将其保存在数据库中,因为此文件可能包含访问它的信息。所以我没有办法在没有获取文件内容的情况下访问官方数据库。顺便说一下,如果我只是为了这个目的而使用简单的数据库(比如H2),那就没问题。用户只能上传文件一次。今天我们直接访问文件系统,违反了限制。 –
如果今天有效,为什么要改变它?虽然这不是一个好习惯,但我已经看到许多基于EJB的应用程序正在访问文件系统...... – home