Сервлет Java говорит, что файл не существует - PullRequest
0 голосов
/ 10 июня 2010

Я разработал Java-сервлет, который отслеживает наличие новых файлов в папке на сетевом диске, а затем выполняет некоторые действия с ними в зависимости от типа файла. Он работал в Eclipse, когда Eclipse и Tomcat работали друг с другом, но теперь, когда я развернул его на сервере (на другой машине), сервлет продолжает регистрировать, что он не может найти папку для сопоставления. Точно такой же сетевой диск сопоставлен, и папка определенно существует. Эта проблема возникает только тогда, когда сервлет запускается на сервере, а не на компьютере разработчика.

Спасибо!

PS: Это Windows Server 2003 Enterprise Server с установленным Tomcat v6.

Ответы [ 3 ]

1 голос
/ 14 июня 2010

Я наконец понял это.

Оказывается, что когда Tomcat запускается, он (очевидно) работает как сервис. Сервис не видит вещи так же, как пользователь. Оказывается, что Windows монтирует только сетевые диски на уровне пользователя. Следовательно, согласно СИСТЕМЕ, привод НЕ существует. Обходной путь должен был использовать пути UNC.

Первоначально я пытался это сделать, но это не сработало, и причина этого в том, что у службы не было правильных разрешений.

Спасибо всем, кто мне помог.

http://wiki.apache.org/tomcat/FAQ/Windows#Q7

1 голос
/ 10 июня 2010

Используете ли вы относительные пути в вашем коде, чтобы найти файл? Пути к файлу в вашей файловой системе, когда код запускается в вашей IDE или локальном Tomcat, скорее всего, не тот же путь к файлу, как при запуске на других компьютерах / средах.

Лучше всего полностью удалить пути из вашего кода и загрузить их из файла конфигурации.

0 голосов
/ 10 июня 2010

Можете ли вы попробовать вывод этого API, чтобы проверить, соответствует ли путь файла тому, что вы ожидаете

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

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