在EC2上进行Hibernate搜索,“无法创建索引目录”

时间:2013-02-05 17:07:04

标签: java amazon-web-services amazon-ec2 hibernate-search

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

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

我的Hibernate Search配置:

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

我正在使用EC2 +弹性beanstalk,linux和tomcat 7。 我的本地机器上有窗户。

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

3 个答案:

答案 0 :(得分:2)

可能是应用程序没有正确的权限来创建基目录吗?也许最好创建基目录并为其提供正确的权限。 AFAIK,Hibernate Search将尝试创建完整路径。如果它不是权限,它将有助于查看完整的堆栈跟踪。

答案 1 :(得分:1)

我有类似的问题。原因是tomcat没有创建目录的权限。如果您在beantalk中查看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中的路径更改为此新路径。

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

答案 2 :(得分:0)

WINDOWS用户

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

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

P.S .:在JAVA_HOME

中书写可能是一个不好的解决方案