Как настроить текущий рабочий каталог в Tomcat? - PullRequest
1 голос
/ 29 октября 2019

Я недавно перенес приложение 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.

Источник: Изменение текущего рабочего каталога в Java?

Владение и разрешения обрабатываются правильно. Я ищу системное решение без внесения каких-либо изменений в код, так как тот же код работает на старом сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...