我正在尝试在aws应用程序上实现休眠搜索。和往常一样,一切都可以在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 +弹性beantalk,Linux和tomcat 7。我的本地计算机上有Windows。
我应该在EC2上手动创建一个名为“ / usr / lucene / indexes”的目录吗?谢谢。
可能是该应用程序没有创建基本目录的正确权限?也许最好创建基本目录并为其赋予正确的权限。 AFAIK,Hibernate Search会尝试创建完整路径。如果这不是权限,则有助于查看完整的堆栈跟踪。
我有类似的问题。原因是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中的路径更改为此新路径。
作为快捷方式,如果您尝试注释掉索引行,则应用程序仍将尝试创建目录,并且仍然会失败。