powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Индикация работы метода класса
25 сообщений из 81, страница 1 из 4
Индикация работы метода класса
    #40109281
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть следующая ситуация: оператор нажимает на кнопку на странице веб-сайта

Код: html
1.
2.
3.
4.
5.
6.
<div>
    <form action="getmail" class="ui-form" method="post">
        <p><input type="submit" value="Загрузить письма с почтового сервиса"></p>
        <p align="left">${connection}</p>
    </form>
</div>



идет вызов сервлета

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
// get mails from imap-server and write mails to hdd

@WebServlet(urlPatterns = {"/getmail"})
public class GetMail extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) {
        try {
		      ..... много всякого
            int connct = MailImap.getMail(imapserver, login, pass, fullPathToFile, pathToRootDir, loadmails, delmails);
			...... 
			// тут нужен индикатор загрузки писем
            request.setAttribute("connection", "Контроль подключения к серверу: " + connct + " Письмо");
            request.getRequestDispatcher("WEB-INF/operator/operator.jsp").forward(request, response);

        } catch (IOException exc) {
        } catch (ServletException exc) {
    }
}
}



который вызывает метод для загрузки писем с сервера и записи писем в формате мыло.емл на ЖД

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
// receive mails by IMAP protocol + SSL, all works, but google

public class MailImap {

    public static int getMail(String imapHost, String login, String password, String fullPathToFile, String pathToRootDir,
                              boolean recMail, boolean delMail) {
        try {
            /* create properties field */
                 ......
            /* create the IMAP store object and connect with the imap server */
                .......
            /* create the folder object and open it */
			.........
            /* retrieve the messages from the folder in array*/
            mailsCnt = messages.length;

            if (mailsCnt > 0) {

                if (recMail) {
                    /* allow recieve mails */
                    for (Message message : messages) {
                        /*write mails to dir */
                        SaveMailToDir.saveFile(fullPathToFile, fileName, pathToRootDir, fullMail);
                    }
                }
            }
            /* delete ALL mails */
            /* set FLAGs to delete if delMail == true */
            /* close the store and folder objects */
            return mailsCnt;

        } catch (NoSuchProviderException exc) {
        } catch (AuthenticationFailedException exc) {
        } catch (MessagingException exc) {
        } catch (IOException exc) {
        } catch (Exception exc) {
        }
        return -1;
    }
}



записи писем в формате мыло.емл на ЖД

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// write mails to hdd

public class SaveMailToDir {

    public static void saveFile(String fullPathToFile, String filename, String pathToRootDir, InputStream input) {
        try {

        } catch (IOException exc) {
        }
    }
}



Все работает как предначертано

НО! загрузка писем с сервиса занимает от 5 до 500 сек (зависит много от чего)

вопросы:
- можно ли сделать индикацию загрузки писем на веб-странице, просто в виде мигающей строки "Идет загрузка. Ждать!"
- если ДА то как

Заранее спасибо за ответы по ЗАДАННЫМ вопросам
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109305
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

это вопрос не сюда - это https://www.sql.ru/forum/html-javascript-css
т.е. к фронту, надеюсь в команде такой есть...
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109309
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
типа такого
Код: html
1.
2.
3.
4.
5.
6.
7.
 <div>
    <form action="getmail" class="ui-form" method="post">
        <input type="submit" value="" style="display:none;" id=""yyy"> 
<button onclick="xxx();">Загрузить письма с почтового сервиса</button>
        <p align="left">${connection}</p>
    </form>
</div>


....

Код: javascript
1.
2.
3.
4.
function xxx(){
отображать гифку
document.getElementByID("yyy").click();
}
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109310
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
даже если б ты использовал websocket то это
Код: java
1.
// тут нужен индикатор загрузки писем


нужно было бы в другом месте, а именно тут

Код: java
1.
2.
3.
4.
5.
                    for (Message message : messages) {
                        /*write mails to dir */
// тут нужен индикатор загрузки писем
                        SaveMailToDir.saveFile(fullPathToFile, fileName, pathToRootDir, fullMail);
                    }


а так как у тебя ajax - то ответ с сервера ты можешь послать только один на один запрос к серверу.
т.е. только с результатом получения всей почты
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109344
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяа так как у тебя ajax - то ответ с сервера ты можешь послать только один на один запрос к серверу.
т.е. только с результатом получения всей почты

тоесть по простому только жаваскрипт, который будет мигать картинку(или строку) с нажатием кнопки и отключаться как то там еще потом разберусь?

в вебсокеты не лезть

Спасибо.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109345
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
НО! загрузка писем с сервиса занимает от 5 до 500 сек (зависит много от чего)

То есть разница в 100 !!! раз и автоматизации не поддается. Наверно зависит от магнитных бурь которые пока не могут предсказать.
Pcrepair
"Идет загрузка. Ждать!"

а другим делами нельзя занимать? ПРИКАЗ тупо ждать от 5 до 500 сек?
Итого ТЗ
- предсказать время получения почты если это возможно
- оформить проверку почты в виде урл на рабочем столе юзверя. Самим юзверем кликая, когда освободится!
- в личном кабинете сделать выбор (извещать СМС, мыло, ....)
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109347
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
тоесть по простому только жаваскрипт, который будет мигать картинку(или строку) с нажатием кнопки и отключаться как то там еще потом разберусь?
да
а отключать - когда придет ответ от сервера - тогда и отключить гифку
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109349
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
в вебсокеты не лезть

Pcrepair
НО! загрузка писем с сервиса занимает от 5 до 500 сек (зависит много от чего)
вот тут с точки зрения юзера - если гифка крутится больше 15 сек - возникает мысль, а не подвисла ли система...
даже если отображать часики -то все знают , что это только браузер работает, а что там на сервере - хз.

я понимаю, что ws - это страшно, но тогда можно было бы индицировать процесс именно с сервера - т.е. заголовки писем или ещё что.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109415
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку есть messages.length - то можно наверное разработать индикатор прогресса.
Да допустим письма разные и могут иметь аттачи - но всё равно это всяко информативнее
чем крутить спиннеры.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109426
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Поскольку есть messages.length - то можно наверное разработать индикатор прогресса.
Да допустим письма разные и могут иметь аттачи - но всё равно это всяко информативнее
чем крутить спиннеры.
проблема не в этом, проблема в том как отображать происходящее а сервере в браузере.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109427
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Оно на сервере.
А клиента не интересуют трудности бэка.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109452
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Поскольку есть messages.length - то можно наверное разработать индикатор прогресса.
Да допустим письма разные и могут иметь аттачи - но всё равно это всяко информативнее
чем крутить спиннеры.
проблема не в этом, проблема в том как отображать происходящее а сервере в браузере.

Ты-же фул-стекер. Создай веб-сокет. Транслируй прогресс. Мне ли тебя учить?
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109453
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ты-же фул-стекер. Создай веб-сокет. Транслируй прогресс. Мне ли тебя учить?
мне то не проблема, вот только для тс
Pcrepair
в вебсокеты не лезть

а я ему аргУмент
вадя
вот тут с точки зрения юзера - если гифка крутится больше 15 сек - возникает мысль, а не подвисла ли система...
даже если отображать часики -то все знают , что это только браузер работает, а что там на сервере - хз.

я понимаю, что ws - это страшно, но тогда можно было бы индицировать процесс именно с сервера - т.е. заголовки писем или ещё что.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109454
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109473
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну была еще более жлобская технология. Аякс-шмаякс. Вроде тоже может прогресс показать. Не?
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109476
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну была еще более жлобская технология. Аякс-шмаякс. Вроде тоже может прогресс показать. Не?
там событие отправки и событие пришел ответ
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109477
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну была еще более жлобская технология. Аякс-шмаякс. Вроде тоже может прогресс показать. Не?
сомет? Long-Polling?
велосипеды...
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109489
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... автор не хочет анимацию типа спиннера. И не хочет веб-сокеты.

Остаётся - просто активный JS который чего-то там будет дергать. Периодически. Не?

P.S. Пятница - прекрасна. Вместо того чтобы идти в пивбар - мы сидим в сорцах.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109490
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
дергать периодически ajax может только в сторону сервера. А автор с глупой постановкой хочет в обратном направлении.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109492
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать два эндпойнта. На одном запускать проверку почты в отдельном потоке и возвращать клиенту идентификатор задачи. На втором, по идентификатору задачи возвращать прогресс. На клиенте опрашивать второй эндпойнт и отображать прогресс пока не закончится или не случится таймаут. Все тоже самое можно сделать и вебсокетами. Вообще клиентская часть в обоих случаях тривиальная. Основная сложность у топикстартера будет разобраться с многопоточкой на сервере. Это просто, но если никогда не делал, то нужно будет внимательно почитать букварь и сделать.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109494
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer,
и потоки не нужны.
Контейнер сам потоки делает.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109496
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer
Можно сделать два эндпойнта.
конечно можно, но если рассматривать систему с множеством клиентов, то дергать сервер - не есть хорошо.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109497
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
fixxer,
и потоки не нужны.
Контейнер сам потоки делает.


Контейнер делает потоки для обработки запроса. А тут нужно запустить долгоиграющую задачу и сразу вернуть результат клиенту.
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109498
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
сокеты? ))))))))))))))))))))))))
...
Рейтинг: 0 / 0
Индикация работы метода класса
    #40109499
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer
и сразу вернуть результат клиенту.

HTTP.OK = 200 результат?
Ты подробнее пиши.
...
Рейтинг: 0 / 0
25 сообщений из 81, страница 1 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Индикация работы метода класса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]