2010-06-09 2 views
0

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

Спасибо!

PS: Это корпоративный сервер Windows Server 2003 с установленным Tomcat v6.

ответ

1

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

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

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

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

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

1

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

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

+0

я сделал, и перенастроить файл конфигурации для сервера, однако, поскольку это сетевой диск, файл находится на E диске для обеих машин. – Austin

0

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

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

+0

, пожалуйста, простите меня, если это глупый вопрос, но я продолжаю получать исключение NullPointerException для строки this.getServletContext(); Почему это должно быть null? – Austin

+0

Возможно, вы хотите также проверить эту ссылку http://www.coderanch.com/t/360208/Servlets/java/getServletConfig-does-not-work – prashant

+0

Я получил это, и путь к файлу действительно не был что я ожидаю. Спасибо, теперь, чтобы узнать, что делать, чтобы исправить это! – Austin

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