Сервлет выбрасывает файл не найден, исключая при доступе к сетевому диску - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть рабочий env и тестовый env. Для производства имеется win2k3 + tomcat 6.0+ и сетевой диск, сопоставленный с буквой диска (z: \ app вместо \ symba \ files \ app). В моем тестовом окружении есть windows xp (все программное обеспечение одинаковое, включая исходный код для сервлета), и test также имеет ту же букву диска, что и сетевой диск.

Tomcat работает с одним и тем же идентификатором пользователя в обеих системах и может получить доступ к файлу через проводник Windows на тестовых m / c и производственных m / c.

Теперь сервлет в windows xp m / c (test m / c) выдает исключение не найденный файл, если пытается получить доступ к существующему файлу (доступен через проводник Windows). Служебный сервлет такой же, как в тестовой среде, и производственный сервлет с радостью выдает файл, когда я его запрашиваю, и не выдает никаких ошибок.

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

Большое спасибо за ваше время и помощь Bo

Ответы [ 3 ]

2 голосов
/ 23 сентября 2010

Вы используете сервер приложений в качестве службы? Назначение букв дисков надежно, только если вы используете интерактивные программы, а не сервисы.

Пару лет назад я попытался решить совершенно идентичную проблему, но, наконец, я сдался и использовал JCIFS для доступа к файлам.

0 голосов
/ 23 сентября 2010

Возможно, вы захотите запустить службу Tomcat как пользователь, имеющий доступ к подключенному диску.

Как указывает andcoz, сопоставления не будут применяться к пользователю SYSTEM в Windows, который яПредполагается, что используется для запуска Tomcat.Вы можете изменить конфигурацию службы, чтобы она работала как пользователь, владеющий сопоставлением дисков, и проверить, продолжает ли происходить сбой.

Связано :

FileNotFoundException выбрасывается прифайл существует.

0 голосов
/ 23 сентября 2010

Если вы запускаете Tomcat с менеджером безопасности, код веб-приложения в соответствии с конфигурацией по умолчанию разрешает доступ только файлам к его каталогу развертывания. Если вы хотите изменить политики приложения, вы можете сделать это в файле conf / catalina.policy или отключить диспетчер безопасности, если вы хотите, чтобы код вашего веб-приложения получил все привилегии.

...