2010-05-25 2 views
0

Java-руководство говорит:Как заблокировать файлы в веб-приложении tomcat?

Замки, удерживаемые на конкретный файл с помощью одной виртуальной машины Java не перекрывают друг друга. Метод перекрытий может использоваться для проверки того, перекрывает ли диапазон блокировки кандидата существующий замок.

Я полагаю, что если я заблокирую файл в веб-приложении tomcat, я не могу быть уверен, что каждый вызов этого приложения выполняется другой JVM, могу ли я? Итак, как я могу заблокировать файлы в моем приложении tomcat надежным способом?

ответ

0

У меня была совершенно противоположная проблема - мой сервлет вызывал блокировку файлов, которые не были бы очищены при перезагрузке контекста. Конечно, причина в том, что я открывал InputStreams/BufferedReaders и не закрывал их. Для вас открытие файлов таким образом может быть довольно низкотехнологичным решением вашей проблемы, так как это должно привести к блокировке на уровне O/S, что, вероятно, вам нужно.

+0

Открытие FileInputStreams автоматически не создает блокировку файлов, или я ошибаюсь? Если я создаю блокировки на уровне O/S, это означает, что блокировки могут находиться на уровне процесса, а одно приложение с несколькими потоками может одновременно обращаться к файлу. Могу ли я рассчитывать, что tomcat выполнит каждый веб-запрос в другом процессе вместо использования потоков? – yankee

+0

Почему бы вам не попробовать? –

+0

Потому что, даже если я узнаю, что моя ОС блокируется на уровне потока, а не на уровне процесса, я не знаю, верно ли это для другой операционной системы. Даже если я узнаю, что tomcat использует процессы в моей настройке, как узнать, действительно ли это верно, если я развертываю свое приложение на другом сервере? Все это немного расплывчато, поэтому я хотел бы прочитать спецификацию, в которой говорится наверняка, или руководство по блокировке файлов в надежном переносном виде в веб-приложениях tomcat. – yankee

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