Cloudbees Tomcat应用程序IOException

时间:2014-06-01 22:27:05

标签: tomcat ioexception cloudbees sesame openrdf

我使用Cloudbees作为我的Java PaaS,我创建了Tomcat 8应用程序并上传了两个WAR文件:

  • OpenRDF Workbench
  • OpenRDF Sesame

[来源:http://www.openrdf.org]

我上传了Workbench,在假设等待期后,我的OpenRDF Workbench实例正常运行,我能够访问Web界面。 之后,我上传了芝麻,在假定的等待期后,我试图访问芝麻的URL,然后出现了:

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 个答案:

答案 0 :(得分:0)

Sesame尝试在给定目录中创建一个日志目录,但失败了。最可能的原因是许可问题。确保运行tomcat的用户具有在该目录中写入的权限,当然还有足够的空间--Sesame将希望使用相同的目录进行数据持久化。

编辑如果Sesame使用的默认位置无法写入,您可以通过设置系统属性info.aduna.platform.appdata.basedir来更改位置。有关详细信息,请参阅section 2.5 of the Sesame user docs

答案 1 :(得分:0)

当您在PaaS上部署此类应用程序时,您应该知道文件系统不是持久性的,因此,如果应用程序使用任何类型的配置文件,每次重新启动/部署应用程序时,您将失去该信息。

解释了文件系统在CloudBees上的工作方式here。如您所见,您无法在任何地方编写文件。

  

您的应用程序可以使用临时/短暂的文件系统访问权限。在java应用程序中,它被注入为" java.io.tmpdir"系统属性 - 您可以根据需要存储文件。请注意以下事项: