2013-05-23 2 views
1

Я написал веб-службу RESTful, используя библиотеку Jersey, и для ответа на запрос мне нужно прочитать текстовый файл в локальной файловой системе. C: \ data.txt. Сервлет отлично работает, когда я запускаю его с tomcat на своем собственном ноутбуке.Не удается найти файл в локальной файловой системе от Servlet

Но когда я развертываю войну на другой машине, работающей под управлением ОС Windows, и снова поместите файл data.txt в C: \ data.txt. Сервлет не может найти файл правильно. У кого-нибудь есть идея, почему это?

Большое спасибо!

+2

Проверьте, какое исключение вы получаете? скорее всего, вы/tomcat-приложение не имеют доступа к c: \ на машине с сервером Windows. –

ответ

1

Проверьте, имеет ли серверный процесс Tomcat права доступа на чтение файла C: \ data.txt. Проверьте, какой пользователь используется для запуска процесса tomcat, и проверьте соответствующие права доступа к нему.

Я также подозреваю, что это ошибка безопасности. Обычно приложения ограничиваются чтением и записью в своем собственном каталоге под $ TOMCAT_HOME/webapps. Если это так, вам нужно изменить $ TOMCAT_HOME/conf/catalina.policy, чтобы вы могли получить доступ к другим каталогам.

+0

Я проверил, что у него есть доступ на чтение. Это очень странно для меня ..... – user1552372

+0

@ user1552372 проверить на безопасность в catalina.policy, как указано в резолюции –

0

Если вам не нужно записывать в файл, подумайте о перемещении его местоположения внутри пути к классам, вместо этого вставляя его в $ TOMCAT_HOME/lib.

Я думаю, что этот подход также лучше в отношении кросс-платформенного.

Смежные вопросы