0

编辑:我重写了问题以包含最新发现并删除已解决的问题。

我正在开发myapp以前由我的同事创建的 servlet 应用程序。我在 Debian 下开发和运行它,我使用的 Tomcat 服务器是 6 版。

在此应用程序中,使用了三个文件:

myapp-database.db - sqlite file, if is is not present application creates it
myapp-log.xml - log file, it is opened/created by the application
myapp-config.xml - configuration files, included in /usr/main/resources

如果我在安装在我的主目录中的 Eclipse-inner-Tomcat 上运行它,文件:myapp-database.dbmyapp-log.xml直接在我的主目录中创建。

如果我将应用程序部署到使用 aptitude 安装的系统 Tomcat 时,此文件会出现问题。它显示在catalina.out

Error while initialising logger: mylog.xml
java.io.IOException: Couldn't get lock for mylog.xml

...

SEVERE: couldn't initialize database:
    opening db: 'mydb.db': Permission denied

java.sql.SQLException: opening db: 'mydb.db': Permission denied

...

我像这样部署应用程序:

sudo cp myapp.war /var/lib/tomcat6/webapps/

然后我无法打开系统Tomcat。如果我从中删除应用程序webapps就可以了。

我在磁盘上的某个地方制作了目录并将所有者更改为 tomcat。我将代码中的文件名更改为绝对路径,以便在目录中创建它们。Tomcat 打开并且没有崩溃,文件是在那里创建的。

这是处理这个问题的正常方式吗?完全在tomcat之外创建应用程序文件?我认为这使应用程序的可移植性降低/更难安装。

也许我应该把文件放在/usr/main/resources哪个myapp-config.xml工作正常?但我不太确定如何让路径指向它们?我也不喜欢这个解决方案,因为如果文件不存在,应用程序应该创建文件。

4

0 回答 0