|
|
|
Tomcat 5.5.12 Поведение сервлета при обрыве закачки
|
|||
|---|---|---|---|
|
#18+
Добрый день ! Есть теоритический вопрос, сам проверить не успел (извиняйте), может кто знает как все это происходит. Исходные данные: страница с формой выбора файла и сервлет-контроллер. Сервлет пишет файл через класс: org.apache.commons.fileupload. Юзер выбирает файл и закачивает, в это время или обрыв по связи происходит или просто сам юзер снимает закачку (просто давит на крестик в браузере). Как я понимаю, управление сервлету из страницы передается сразу, передаваемые данные нигде не буферизуются и выводом данных занимается сам сервлет, вернее класс: org.apache.commons.fileupload. Как себя ведет сервлет в этом случае ? Он виснет и будет висеть пока JVM не перестартует ? В таком случае, (если он еще и SingleThread) , то уже никто не сможет ничего загрузить. Или он виснет и Tomcat потом сам его снимает ? Я так понимаю, что будет утечка памяти в случае висюков. Какая метода разруливания этой ситуации ? Спасибо заранее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 10:12 |
|
||
|
Tomcat 5.5.12 Поведение сервлета при обрыве закачки
|
|||
|---|---|---|---|
|
#18+
ну может кто то все таки знает, хоть часть ответов ? Спасибо заранее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 16:10 |
|
||
|
Tomcat 5.5.12 Поведение сервлета при обрыве закачки
|
|||
|---|---|---|---|
|
#18+
galishaну может кто то все таки знает, хоть часть ответов ? Спасибо заранее Будет read timeout и в конце концов ServletException. После чего обработка запроса завершится и ваш однопоточный сервлет станет свободен. Но зачем бы это делать его однопоточным?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 17:28 |
|
||
|
Tomcat 5.5.12 Поведение сервлета при обрыве закачки
|
|||
|---|---|---|---|
|
#18+
Спасибо большое ! Про однопоточность я написал ради контраста, чтобы подчеркнуть проблему. Иными словами, в том месте, где идет запись в файл, после timeout'a возникнет исключение, и последующие команды, котоорые идут за вызовами org.apache.commons.fileupload исполняться не будут ? Если это так, то это замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 18:04 |
|
||
|
Tomcat 5.5.12 Поведение сервлета при обрыве закачки
|
|||
|---|---|---|---|
|
#18+
galisha Иными словами, в том месте, где идет запись в файл, после timeout'a возникнет исключение, и последующие команды, котоорые идут за вызовами org.apache.commons.fileupload исполняться не будут ? Нну... Например, DiskFileUpload.parseRequest в этом печальном случае кинет FileUploadException. Если это исключение не ловится где-то до выхода из service() (или doGet(), или doPost() ), эти методы завершатся киданием ServletException в контейнер. Если оно ловится, сами решите, что там делать в этом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 19:14 |
|
||
|
Tomcat 5.5.12 Поведение сервлета при обрыве закачки
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, проэксперементировал на выходных. Схема такая: 1. Юзер на форме давит Ok 2. Запускается doPost в сервлете, доходит до метода записи файла на диск. 3. Начинает записываться файл (куда то в temp). 4. Юзер рвет соединение. 5. Возникает исключение, и doPost прекращает работу. Причем файл на диске не образуется и это радует. Ловить исключение не пытался, необходимости такой не возникло. спасибо еще раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 09:52 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=770&tid=2150983]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 331ms |

| 0 / 0 |
