如何在Tomcat中配置当前工作目录?

时间:2019-10-28 22:00:50

标签: java linux tomcat

我最近将tomcat应用程序从一台Linux服务器迁移到了另一台。从那时起,我在新服务器上面临一个新的文件创建问题。在新服务器中,当我尝试创建文件时失败,这在旧服务器中可以正常工作:

File convFile = new File(file.getOriginalFilename());
convFile.createNewFile(); //this FAILS
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();

要调查此问题,我使用以下命令打印了工作目录:

String cwd = new File("").getAbsolutePath();
System.out.println(cwd);

此调试揭示了问题背后的根本原因: 旧服务器返回:var / lib / tomcat,而新服务器返回:/(根目录) 由于tomcat用户没有(也应该没有)对根目录的写权限,因此它无法创建文件。

我的问题是,哪个因素决定了Tomcat的当前工作目录,以及如何配置它?

这是我的Tomcat和Java环境变量。

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"

更新:我尝试-Duser.dir配置工作目录。使用此功能后,我从System.out.println(cwd);获得了预期的结果。但是问题仍然存在,文件创建失败。显然,这不适用于FileOutputStreams

来源:Changing the current working directory in Java?

所有权和权限得到正确处理。我正在寻找一个无需更改任何代码的系统端解决方案,因为相同的代码正在旧服务器中运行。

0 个答案:

没有答案