Приложение Cloudbees Tomcat IOException

Я использую Cloudbees в качестве своего Java PaaS, я создал приложения для Tomcat 8 и загрузил два файла WAR:

  • Верстак OpenRDF
  • Сезам 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)

Как я могу это исправить?


person Paulo Oliveira    schedule 01.06.2014    source источник


Ответы (2)


Когда вы развертываете приложения такого типа на PaaS, вы должны знать, что файловая система не является постоянной, поэтому, если это приложение использует какой-либо файл конфигурации, каждый раз, когда вы перезапускаете/развертываете приложение, вы теряете эту информацию.

Принцип работы файловой системы в CloudBees объясняется здесь. Как видите, вы не можете записывать файлы туда, куда хотите.

Вашему приложению доступен временный/эфемерный доступ к файловой системе. В java-приложении это вводится как системное свойство "java.io.tmpdir" - вы можете хранить там файлы по мере необходимости. Обратите внимание на следующее:

person felix    schedule 02.06.2014
comment
Я понимаю, как вы и Cloudbees упоминаете об этом, чтобы сохранить данные в файлы (файловую систему), я могу добиться этого только через java.io.tmpdir, но, поскольку Sesame является сторонним (с моей точки зрения) программным обеспечением/приложением, вероятно, я делаю не иметь возможности (скорее не должен) вносить изменения на этом уровне... - person Paulo Oliveira; 03.06.2014

Sesame пытается создать каталог журналов в указанном каталоге, но терпит неудачу. Наиболее вероятной причиной является проблема с разрешением. Убедитесь, что пользователь, от имени которого запускается tomcat, имеет разрешение на запись в этот каталог и, конечно же, достаточно места — Sesame захочет использовать тот же каталог для сохранения данных.

редактировать Если расположение по умолчанию, которое использует Sesame, не может быть сделано доступным для записи, вы можете изменить расположение, установив системное свойство info.aduna.platform.appdata.basedir. См. раздел 2.5 пользовательской документации Sesame для подробностей.

person Jeen Broekstra    schedule 02.06.2014
comment
Я знаю, что эта ошибка/исключение типа IO связано с разрешениями или доступом к файловой системе, но Cloudbees, будучи PaaS, не имеет такой гибкости, когда она связана с точки зрения пользователя, если она у меня есть, по крайней мере, я не знать, как использовать и настраивать Cloudbees таким образом, чтобы добиться такой гибкости. И это было в центре моего вопроса ... - person Paulo Oliveira; 03.06.2014
comment
Ну, я не знаю, как это сделать в Cloudbees, но я могу дать вам информацию о том, что происходит в конце Sesame. Смотрите мою правку. - person Jeen Broekstra; 04.06.2014