4

我正在尝试在我的 aws 应用程序上实现 Hibernate Search。像往常一样,在 localhost 上一切正常,但是当上传到 aws 时,我收到以下错误:

org.hibernate.search.SearchException: Unable to create index directory: 
/usr/lucene/indexes for index com.myproject.domain.User

我的休眠搜索配置:

<prop key="hibernate.search.default.directory_provider">filesystem</prop>
<prop key="hibernate.search.default.indexBase">/usr/lucene/indexes</prop>

我正在使用 EC2 + elastic beanstalk,带有 tomcat 7 的 linux。我的本地机器上有 Windows。

我应该在 EC2 上手动创建一个名为“/usr/lucene/indexes”的目录吗?谢谢。

4

3 回答 3

6

可能是该应用程序没有创建基本目录的正确权限吗?也许最好创建基本目录并赋予它正确的权限。AFAIK,Hibernate Search 将尝试创建完整路径。如果这不是许可的事情,那么查看完整的堆栈跟踪会有所帮助。

于 2013-02-07T11:40:16.543 回答
1

我有类似的问题。原因是tomcat没有创建目录的权限。如果您查看 beanstalk 中的 eb 活动日志,则会创建目录,然后授予 tomcat 权限。

  ++ /opt/elasticbeanstalk/bin/get-config container -k tomcat_version
  + TOMCAT_VERSION=8.5
  + '[' 8.5 == 8.5 ']'
  + TOMCAT_VERSION=8
  + TOMCAT_NAME=tomcat8
  + [[ -n true ]]
  + rm -rf /var/log/tomcat8
  + mkdir -p /var/log/tomcat8
  + chown -R tomcat:tomcat /var/log/tomcat8
  + /opt/elasticbeanstalk/bin/log-conf -ntomcat8 '-l/var/log/tomcat8/*'

所以你应该创建一个目录示例 var/myindex 并授予权限

sudo chown tomcat:tomcat /var/myindex

在您的代码中,将 persistence.xml 中的路径更改为这个新路径。

作为一种快捷方式,如果您尝试注释掉索引行,应用程序仍然会尝试创建目录并且仍然会失败。

于 2019-11-30T13:15:38.673 回答
0

对于 Windows 用户

授予对服务器要创建所需目录的文件夹的写入权限。

就我而言,服务器想要在其中创建一个文件夹,因此我授予了为此文件夹写入C:\Program Files\Java\jdk1.8.0_191 的权限。

PS:这可能是一个糟糕的解决方案,因为它在JAVA_HOME

于 2019-12-26T13:25:34.480 回答