2

我需要在 Java EE 应用程序启动时创建一个 Lucene 索引,但我不想自己决定索引在文件系统中的位置。应用程序通常如何存储运行时创建的任何文件,引擎是否为每个应用程序提供了任何类型的存储等,我可以使用。

4

3 回答 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/ 然后使该位置可配置。

你可以在这里阅读更多:

http://www.pathname.com/fhs/pub/fhs-2.3.html

于 2010-08-13T08:34:23.960 回答