![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Gugle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Плохо. Значит из того что я прочитал я не сделал ни одного верного вывода.
![]() ![]() ![]() ![]() Добавлено через 12 минут и 9 секунд Значит. Сделав следующий запрос к сервеу:
Я не могу получить от него ответа пока он не завершиться. Т.е. обязан дождаться передачи всего файлн и только после этого я получу подтверждение принял я его или нет. Тогда как я могу получить подстверждение принятого байта? З.Ы. Сорь. Ламер в этих вопросах. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Тебе надо или реализовать еще один сервлет, который по запросу будет возвращать количество байт загруженных в текущей сессии (т.е. тебе надо будет или хранить в сессии это число или сделать механизм который позволит его получить по ID сессии).
Либо вообще забить на POST, и реализовать свой сервлет (не HTTP!), который бы принимал данные по собственному протоколу и переодически слал бы данные о принятом количестве байт. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gugle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Почему то не обновляется диалоговое окно прогресса в аплете. При этом если появление диалогового окна положить в метод init() аплета то все нормально, а если в обработчик нажатия на кнопку, то диалог появляется, но не обновляется.
Использую стандартное окно ProgressMonitor. В чем может быть проблема? |
|||
|
||||
Gugle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Да, кстати, все расчеты происходят в отдельном потоке. (В данном случае отправка файла)
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Покажи код.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gugle |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Applet:
Код загрузчика:
Это сообщение отредактировал(а) Gugle - 25.3.2008, 12:43 |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Ну и где тут у тебя отправка происходит в отдельно потоке? Все работает в AWT потоке, потому ничего и не перерисовывается. Вынеси загрузку файла на сервер в отдельный поток.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gugle |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Вынес все в отдельный поток.
Ничего не изменилось. Или я не верно делаю? |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Блин!
Ну нафига надо ожидать пока тот поток завершиться? В чем тогда вообще смысл выносить выполнение это операции в отдельный поток, если основной поток все равно будет ждать пока вспомогательный завершиться? Ты должен запустить поток и выйти з метода. Когда поток завершит загрузку пусть вызовет некий метод который сделает необходимые действия (покажет сообщение и т.п.). В этом же потоке обновляй значение прогресбара по мере продвижения загрузки. Только не забывай, что все изменения GUI из других потоков надо делать через SwingUtilities.invokeLater(). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gugle |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Так основной поток рождает диалоговое окно которое говорит пользователю, что он должен ожидать окончания загрузки файла. При этом я должен как то заполнять progressBar, вот я и создаю доп. поток который передает файл и при этом из которого я вытаскиваю количество переданной информации. Основной поток при этом должен так же ожидать загрузки файла на сервер. Разве при этом обновление progressBar рожденного в основном потоке не должно происходить?
А зачем мне ждать когда поток завершит загрузку? Веть мне надо показать progressBar именно во время загрузки файла. Добавлено через 1 минуту и 14 секунд А так же показывать сколько % загружено. |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Ты вызываешь загрузку из обработчика события AWT. Пока ты не выйдешь из этого обработчика не будет происходить никакая обработка событий GUI, ничего не будет перерисовываться, окошки не будут открываться/закрываться и т.д. Именно для этого и нужен отдельный поток, чтобы сразу после его запуска вернуть управление AWT.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gugle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Спасибки.
Это сообщение отредактировал(а) Gugle - 26.3.2008, 12:28 |
|||
|
||||
emelanov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
LSD,
День добрый, у меня такая же проблема, только вместо апплета вебстарт (т.е. вебстарт-эдитор для определённого вида xml-файлов, должен уметь сохранять готовые на родном сервере), думаю воспользоваться этим же решением. Вопрос: это тоже будет :"
т.е. существует ли более красивое решение? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
В твоем случае - нет не будет. Дело в том, что Gugle, делал апплет предназначенный только для загрузки файлов на сервер, хотя подобный функционал можно реализовать и без применения апплета. У тебя же есть готовое приложение и ты просто добавляешь в него некий функционал. Что лучше использовать HTTP POST или свой собственный протокол - вопрос открытый. С одной стороны HTTP POST проще реализовывать серверную часть и нет привязки к языку программирования, очень нетребователен к соединению (если клиент сидит за firewall, proxy, NAT). Свой протоколо - более гибкий (например позволяет реализовать докачку, сжатие передаваемых данных и т.п.), позволяет обойтись одним соединением для получения прогресса загрузки (в случае с HTTP POST, нужно одно для загрузки, и еще куча запросов на выяснение сколько было уже загружено). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
emelanov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
ок, спасибо.
Думаю, мне HTTP POST подойдёт, так как мне не нужны проценты, файлы будут довольно мелкие, по любому меньше Mb. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Апплеты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |