我需要在 Java EE 应用程序启动时创建一个 Lucene 索引,但我不想自己决定索引在文件系统中的位置。应用程序通常如何存储运行时创建的任何文件,引擎是否为每个应用程序提供了任何类型的存储等,我可以使用。
问问题
190 次
3 回答
2
我不想自己决定索引在文件系统中的位置。应用程序通常如何存储运行时创建的任何文件,引擎是否为每个应用程序提供任何类型的存储等
默认情况下,java.io
包中的类根据当前工作目录解析相对路径名- 即调用命令的文件系统中的位置java
- 您可以使用user.dir
系统属性获取:
String curDir = System.getProperty("user.dir");
但是这样做远非理想(实际上,写入文件对于可移植应用程序来说并不理想),我不推荐这种方法,但建议使用绝对文件系统路径和例如系统属性:
new File(System.getProperty("my.directory" + File.separator + "xxx");
该属性my.directory
将在应用服务器启动脚本中设置,例如假设 JBoss 安装在 下/opt
,-Dmy.directory=/var/opt/jboss/<somedir>
用于 FHS 兼容。
请记住:
- 写入 FS 对于应用程序的可移植性并不理想。如果可能,更喜欢写入数据库
- 从 EJB使用
java.io
在理论上是被禁止的。
于 2010-08-14T22:10:44.573 回答
2
通常你在 JBoss 和 Tomcat 等应用服务器的当前目录 (.) 中创建一个 Lucene 索引,索引文件夹是在 bin 文件夹中创建的,这根本不是一个好主意。
您可以使用Compass将索引文件存储在数据库(或几乎任何其他存储设备)中,也可以将其存储在文件系统上的路径中。
据我所知,Java EE 容器中没有针对每个应用程序的特殊存储。
于 2010-08-13T08:24:26.880 回答
0
我想说最好的方法是将数据存储在文件系统中的默认路径上,例如 /var/lib/your_application/ 然后使该位置可配置。
你可以在这里阅读更多:
于 2010-08-13T08:34:23.960 回答