Если вы развернули войну, приложение не находится нигде в файловой системе как таковой. Большинство серверов где-то распаковывают войну, но не стоит полагаться на то, где это.
Я могу придумать несколько вариантов:
getServletContext (). GetAttribute ("javax.servlet.context.tempdir"), чтобы получить временный каталог приложения, затем сообщить внешней программе об этом местоположении и поместить файл где-то там в известном месте.
Создайте «известное местоположение» вне приложения, например, / tmp / где-нибудь или / var / cache / your-app / где-нибудь для размещения таких файлов. (Примечание: / tmp обычно очищается при запуске машины с Linux)
Что касается получения файла на сервер с удаленного компьютера: вы можете заставить своего клиента загрузить файл непосредственно в ваше веб-приложение (что-то вроде Apache HTTPClient поможет вам в этом), что означает, что вы можете обойтись без "ноу" расположение "выше. Если вы хотите сделать это вне приложения, я бы избегал FTP (из-за безопасности). Вместо этого я бы использовал scp (безопасное копирование).
Редактировать: Читая немного между строк, вы упоминаете «настройки» в файле данных. Если это файл конфигурации, который не изменяется при запуске приложения, может оказаться более удобным иметь шаг «развертывания» на вашем сервере, который просто берет файл настроек и добавляет его к войне перед его развертыванием. Это достаточно просто, например, с помощью «муравьиной войны». Затем вы можете получить доступ к файлу, используя getClass (). GetResourceStream (..) или что-то подобное.