Cloudbees Tomcat Application IOException
Я использую Cloudbees в качестве своего Java PaaS, я создал для приложений Tomcat 8 и загрузил два файла WAR:
- OpenRDF Workbench
- OpenRDF Сезам
[источник: http://www.openrdf.org/ ]
Я загрузил Workbench и после предполагаемого периода ожидания, мой экземпляр OpenRDF Workbench работал, я смог получить доступ к веб-интерфейсу. После того, как я загрузил Sesame, и после предполагаемого периода ожидания я попытался получить доступ к URL для sesame, и это появилось:
HTTP Status 500 - Servlet.init() for servlet openrdf-http-server threw exception
(...)
root cause
java.io.IOException: Unable to create logging directory /var/genapp/apps/8ec10836/.aduna/openrdf-sesame/logs
info.aduna.app.logging.base.LogConfigurationBase.setBaseDir(LogConfigurationBase.java:70)
info.aduna.app.AppConfiguration.init(AppConfiguration.java:155)
info.aduna.app.AppConfiguration.init(AppConfiguration.java:140)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
Как я могу это исправить?
2 ответа
Сезам пытается создать каталог журнала в указанном каталоге, но не удается. Наиболее вероятная причина - проблема с разрешением. Убедитесь, что у пользователя, под которым запускается tomcat, есть разрешение на запись в этот каталог, и, конечно же, достаточно места - Сезам захочет использовать этот же каталог для сохранения данных.
edit Если местоположение по умолчанию, которое использует Сезам, не может быть доступно для записи, вы можете изменить местоположение, установив системное свойство info.aduna.platform.appdata.basedir
, Подробнее см. В разделе 2.5 документации пользователя "Сезам".
При развертывании приложений такого типа на PaaS вы должны знать, что файловая система не является постоянной, поэтому в случае, если приложение использует какой-либо файл конфигурации, каждый раз, когда вы перезапускаете / развертываете приложение, вы потеряете эту информацию.
Принцип работы файловой системы в CloudBees описан здесь. Как видите, вы не можете писать файлы, где хотите.
Временный / эфемерный доступ к файловой системе доступен для вашего приложения. В java-приложении это вводится как системное свойство "java.io.tmpdir" - вы можете хранить файлы там, где это необходимо. Пожалуйста, обратите внимание на следующее: