|
|
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Доброго здравия, дорогие коллеги. Есть такая задача: имеется страница основанная на темплейте с кнопочками, по нажатию на кнопку выполняется коннект и прочие операции с удаленным сервером через ssh. Для корректного отображения процесса, хочется по нажатию этой же кнопочки, получать запуск и останов ProgressIndicator-а, но... все примеры, связанные с данным функционалом основаны на работе двух кнопочек "Старт" и "Стоп" - с ними все отлично работает. А вот с одной кнопкой никак, например, наипростейший вариант - запускать попап с прогрессом и закрывать его при выполнении процесса, оставляю в екшн методе кнопки запуск попапа и выполнение скрипта. Он запускается, ничего не делает какое-то время(кнопка в это врмя в состоянии недоступно), потом попап с прогрессом и сообщение лога выводятся вместе. Я так понимаю, все что в экшен листенере кнопки выполняется в одном потоке и поэтому получить результат отдельно нельзя. Пробовала запускать попап через клиент листенер с помощью JavaScript, он и не ругается, но и ничего не делает, возможно, из-за того, что это темплейт и бины не видят друг-друга(не знаю как это еще объяснить). В общем, кто как выходил из этой ситуации? Использую JDev 11gR2 Как всегда, благодарна идеям :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 19:37:37 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Ничего не понял :). Если с двумя кнопочками всё работает, то непонятно, какая проблема переделать для одной кнопки? В чём именно затык? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 10:55:25 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
P.S. Если вы хотите видеть прогресс выполнения длинной операции и возможность её прервать вам не обойтись без создания нового потока, в котором будет эта операция выполняться. А на view достаточно будет добавить компонент poll, который будет обновлять состояние progress indicator. Это если я всё правильно понял :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 11:54:33 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Это если я всё правильно понял :) не совсем MOHAX777В чём именно затык? в том, что эти два процесса: отображение прогресса и сам процесс на сервере, выполняются в одном потоке, и получается, что как результат я получаю все скопом на выходе из екшн. листенера. Поэтому их нужно как-то разграничить, мне подсказали 2 варианта: выделить выполнение процесса в отдельный поток, либо запускать его не по екшн листенеру кнопки, а по клиент листенеру, а по экшн листенеру отображение процесса ганять. Попробую для начала 2й вариант, с разграничение потоков пока работать не приходилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 12:52:33 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunв том, что эти два процесса: отображение прогресса и сам процесс на сервере, выполняются в одном потоке, и получается, что как результат я получаю все скопом на выходе из екшн. листенера. Поэтому их нужно как-то разграничить, мне подсказали 2 варианта: выделить выполнение процесса в отдельный поток, либо запускать его не по екшн листенеру кнопки, а по клиент листенеру, а по экшн листенеру отображение процесса ганять. Попробую для начала 2й вариант, с разграничение потоков пока работать не приходилось. Про первый вариант я вам в p.s. как раз и описал, а вот про второй вариант у меня сильные сомнения, что такое вообще возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2013, 11:10:17 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Про первый вариант я вам в p.s. как раз и описал, а вот про второй вариант у меня сильные сомнения, что такое вообще возможно. попробовала, возможно, но не в моем случае. Т.к. у меня на клиенте работа с радиоБаттонами, приходится сетить переменные, а вызов по клиентлистенеру все переменные обнуляет. Так шо "факир был пьян и фокус неудался", выделила выполнение скрипта в отдельный поток, все отрабатывает, НО, мне нужно выводить лог этого скрипта в виде сообщения на клиент, а FacesContext из потока не виден. Передать его в бин никак не могу, поскольку информация по процессу умирает вместе с потоком... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2013, 12:02:43 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, Используйте poll, в котором берите текст из потока и выводите на экран. Не вижу проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 12:28:53 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Oksana Palun, Используйте poll, в котором берите текст из потока и выводите на экран. Не вижу проблем. 13774749 и ниже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 12:36:12 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMOHAX777Oksana Palun, Используйте poll, в котором берите текст из потока и выводите на экран. Не вижу проблем. 13774749 и ниже. метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:29:32 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции. Так у Oksana Palun проблема в том что она не может передать данные из контекста запроса\ответа в асинхронную задачу и из асинхронной задачи обратно в контекста запроса\ответа. Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу, пытается использовать facecontext в самой асинхронной задаче. Опять же все эти пляски со своими потоками в JEE вообще не рекомендуются без JMS. Тем более, если опыта работы с многопоточностью минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:33:07 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции. И ещё не понятно куда буферизировать лог до того как следующий poll пришел. А если он ещё и жирный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:34:01 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMOHAX777метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции. Так у Oksana Palun проблема в том что она не может передать данные из контекста запроса\ответа в асинхронную задачу и из асинхронной задачи обратно в контекста запроса\ответа. Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу, пытается использовать facecontext в самой асинхронной задаче. Опять же все эти пляски со своими потоками в JEE вообще не рекомендуются без JMS. Тем более, если опыта работы с многопоточностью минимум. Я делала и так и так. С пулом не сложилось, потому, что метод, который нужно вызывать в пуле, вызывается из бина, где инициализированы переменные, которые устанавливаются на клиенте. При срабатывании пула, они обнуляются, где это настраивается, если настраивается, я не нашла. Поэтому перешла к варианту с потоками, "Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу" в поток я данные с клиента передаю, но задача в потоке возвращает лог, это совсем другие данные, которые нужно вернуть в facecontext. Ожидать этот лог, в клиентском бине, смысле не имеет, это будет то же самое, что и просто выполнение процесса по кнопке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:45:44 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunЯ делала и так и так. Как и как? Oksana PalunС пулом не сложилось, потому, что метод, который нужно вызывать в пуле, вызывается из бина, где инициализированы переменные, которые устанавливаются на клиенте. При срабатывании пула, они обнуляются, где это настраивается, если настраивается, я не нашла. Поэтому перешла к варианту с потоками, Что такое "пул" в вашем понимании в этой теме, по-моему ещё никто не понял. Вы pool и poll часом не путаете? Oksana Palun"Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу" в поток я данные с клиента передаю, Вы не можете прямо с "клиента" передать данные в поток. Клиент отправляет данные на сервер, и этот запрос уже обрабатывается в контексте JSF. А там вы собираете данные из запроса и помещаета в "свой поток". Вы бы уже, что ли, код показали. Потому что в вашей персональной терминологии, разобратся сложно. Oksana Palunно задача в потоке возвращает лог, это совсем другие данные, Мы и не ожидали что это будут "те же самые данные". Oksana Palunкоторые нужно вернуть в facecontext. Данные нужно сложить куда-то и замапить на id юзера\клиента\задачи\сессии. А потом когда запрос придёт ещё раз с клиента (если реализовать poll). Найти лог по id и вернуть. Oksana PalunОжидать этот лог, в клиентском бине, смысле не имеет, это будет то же самое, что и просто выполнение процесса по кнопке. Что такое "клиентский бин"? Не нужно ничего "ожидать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:56:55 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunЯ делала и так и так. С пулом не сложилось, потому, что метод, который нужно вызывать в пуле, вызывается из бина, где инициализированы переменные, которые устанавливаются на клиенте. При срабатывании пула, они обнуляются, где это настраивается, если настраивается, я не нашла. Поэтому перешла к варианту с потоками Вы как-то странно рассматриваете задачу, потоки и poll не должны расматриваться как "или то или другое". В данном случае они работают вместе: 1. По нажатии на кнопку "Пуск" создаётся поток, который сохраняется в application scope с привязкой к пользователю. В этом потоке есть метод, который отдаёт текущий лог. 2. Запускается poll с нужным интервалом, при этом в методе этого poll берётся нужный поток и вызывается метод, который возвращает лог. Этот лог выводим на экран. В случае, если поток завершил работу, то "дизэйблим" poll и "чистим" поток. Проблемы: 1. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач. 2. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи. Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции. Может, уважаемый Blazkowicz прояснит этот момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:38:37 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX7771. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач. В этом случае имеет смысл сразу брать JMS или любую готовую MQ. Городить очереди в базе, это уже попахивает лисопедом. MOHAX7772. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи. Сервер точно не может знать когда юзер отвалился, разве что если сессия явно инвалидирована. Если асинхронная задача имеет цикличность, то, да. Можно в цикле проверять валидность сессии. Но, как я понимаю, из постановки задачи в данном случае там запускается какой-то тормозной скрипт, поэтому прервать его получится вряд ли. Разве что если оно понимает Thread.interrupt() нормально. Т.е. это нужно смотреть на то какая конкретно там задача решается асинхронно. Можно её прибить или нет. MOHAX777Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции. Вот именно поэтому для данной задачи, я бы использовал COMET/Long Polling, чтобы лог незамедлительно слать клиенту. Нечего его на сервере хранить и потом ещё не известно когда чистить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:45:59 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX7771. По нажатии на кнопку "Пуск" создаётся поток, который сохраняется в application scope с привязкой к пользователю. В этом потоке есть метод, который отдаёт текущий лог. 2. Запускается poll с нужным интервалом, при этом в методе этого poll берётся нужный поток и вызывается метод, который возвращает лог. Этот лог выводим на экран. В случае, если поток завершил работу, то "дизэйблим" poll и "чистим" поток. А можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу. MOHAX777Проблемы: 1. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач. 2. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи. Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции. Может, уважаемый Blazkowicz прояснит этот момент. Про отвалы мне уже говорили, пока даже и не думала, об этом. Будем решать проблемы по мере их поступления, задача вроде не должна отрабатывать дольше 10ти минут, а за это время он не валится. И кстати, есть ли в ADF возможность управления временем жизни сессий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:46:29 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТ.е. это нужно смотреть на то какая конкретно там задача решается асинхронно. Можно её прибить или нет. Поднятие/останов инстансов на линуксовом сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:48:34 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunА можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу. Извините но с каждым новым вашим сообщением возникает все большее желание поставить смайлик фейспалм. Ваша терминология просто взрывает мозг, выложите уже код, пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:51:41 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunЯ создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу. Фак мой мозг. Сделайте HashMap с ключем http session id и значением ваш Thread. Хотя асинхронную задачу стоило инкапсулировать в что-то более приличное: Runnable, Сallable и т.п. Oksana PalunИ кстати, есть ли в ADF возможность управления временем жизни сессий? Google->ADF invalidate session ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:54:17 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunMOHAX7771. По нажатии на кнопку "Пуск" создаётся поток, который сохраняется в application scope с привязкой к пользователю. В этом потоке есть метод, который отдаёт текущий лог. 2. Запускается poll с нужным интервалом, при этом в методе этого poll берётся нужный поток и вызывается метод, который возвращает лог. Этот лог выводим на экран. В случае, если поток завершил работу, то "дизэйблим" poll и "чистим" поток. А можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу. Ну вы же создаёте поток типа: UploadFileThread upt = new UploadFileThread(); Thread threadUploadFile = new Thread(upt); threadUploadFile.start(); вот и положите threadUploadFile в какой-нибудь map (application scope) с привязкой к пользователю. Oksana PalunMOHAX777Проблемы: 1. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач. 2. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи. Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции. Может, уважаемый Blazkowicz прояснит этот момент. Про отвалы мне уже говорили, пока даже и не думала, об этом. Будем решать проблемы по мере их поступления, задача вроде не должна отрабатывать дольше 10ти минут, а за это время он не валится. И кстати, есть ли в ADF возможность управления временем жизни сессий? стандартно через web.xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 14:58:54 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunПоднятие/останов инстансов на линуксовом сервере. инстанс это "экземпляр". "экземпляр" он обычно чего-то (класса, SQL сервера и т.п.)? Это реализовано на pure Java, или запускается внешний процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:01:36 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczФак мой мозг. Сделайте HashMap с ключем http session id и значением ваш Thread. Хотя асинхронную задачу стоило инкапсулировать в что-то более приличное: Runnable, Сallable и т.п. Вы конечно понимаете, но для ТС надо бы уточнение чтобы она не забывала регулярно чистить эту мапу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:03:56 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
забыл никИзвините но с каждым новым вашим сообщением возникает все большее желание поставить смайлик фейспалм. Ваша терминология просто взрывает мозг Ставьте, если очень хочется, я ADF только учу, поэтому ничего странного, что моя терминология хромает, о чем я Вас предупреждала ранее. Если вы бедете просто рассказывать, как неправильно я выражаюсь, будет менее эффективно, если вы меня поправите. забыл никвыложите уже код, пожалуйста ОК 1. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 2. Создание потока в бине(manage bean) по actionListener Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 3. pool Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:05:59 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana PalunПоднятие/останов инстансов на линуксовом сервере. инстанс это "экземпляр". "экземпляр" он обычно чего-то (класса, SQL сервера и т.п.)? Это реализовано на pure Java, или запускается внешний процесс? инстанс схем Код: 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. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:07:28 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
забыл никВы конечно понимаете, но для ТС надо бы уточнение чтобы она не забывала регулярно чистить эту мапу И это не такая простая проблема, как может показатся на первый взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:14:46 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
То есть не подымаете вы там никакой инстанс, а просто посылаете команду по SSH. В такой постоновке задачи прибить работающий процесс будут сложно, да и вообще не безопасно. Единственное стоит предусмотреть механизм защиты от повторного запуска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:17:01 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Blazkowiczзабыл никВы конечно понимаете, но для ТС надо бы уточнение чтобы она не забывала регулярно чистить эту мапу И это не такая простая проблема, как может показатся на первый взгляд. Ну, до этого места ТС ещё не добралась, не пугайте её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:18:54 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТо есть не подымаете вы там никакой инстанс, а просто посылаете команду по SSH. да, я посылаю команду, которая поднимает инстанс, вся работа идет на том сервере.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:19:04 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Оксана, у меня, конечно закрадывались подозрения, но я их почему-то отбрасывал. У вас ADF свинговый??? Не WEB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:19:27 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Ну, до этого места ТС ещё не добралась, не пугайте её. та пугайте, "предупрежден, значит вооружон" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:19:43 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunда, я посылаю команду, которая поднимает инстанс, вся работа идет на том сервере.. Научитесь отделять зерна от плевел. В контексте вашей проблемы абсолютно до жопы что там происходит на сервере. В вашей задаче вы просто выполняете команду по SSH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:20:33 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczОксана, у меня, конечно закрадывались подозрения, но я их почему-то отбрасывал. У вас ADF свинговый??? Не WEB? ADF бывает свинговый? Вообще, в нем можно успешно совмещать и то и то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:21:26 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palunда, я посылаю команду, которая поднимает инстанс, вся работа идет на том сервере.. Научитесь отделять зерна от плевел. В контексте вашей проблемы абсолютно до жопы что там происходит на сервере. В вашей задаче вы просто выполняете команду по SSH. ок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:22:02 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, Почему в одном месте так Код: java 1. 2. а в другом так Код: java 1. Так старайтесь не делать Код: java 1. А вот так не делайте никогда Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:23:24 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunADF бывает свинговый? На сколько я знаю - да. На сколько это актуально - не знаю. Oksana PalunВообще, в нем можно успешно совмещать и то и то. Вы таки расскажите у вас у юзера Web страница в браузере или Swing GUI окошко. Оба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:25:14 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palun, Почему в одном месте так Код: java 1. 2. а в другом так Код: java 1. ну потому же, что в потоке FacesContext недоступен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:30:01 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы таки расскажите у вас у юзера Web страница в браузере или Swing GUI окошко. Оба? только Web ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:30:48 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunну потому же, что в потоке FacesContext недоступен... это я уже извратилась, чтобы хоть как-то лог клиенту отобразить, без сохранения ее в БД/файл и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 15:31:59 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunэто я уже извратилась, чтобы хоть как-то лог клиенту отобразить, без сохранения ее в БД/файл и пр. JOptionPane выкинуть к чертовой матери везде. Используйте logger, в случае ошибок. Это абслютно не верное условие. Код: java 1. Откройте любой пример про InputStream и возьмите перекачку оттуда. А ещё лучше Apache Commons IOUtils.copy() Вместо new String(tmp копируйте в ByteArrayOutputStream ByteArrayOutputStream храните значением в HashMap, а ключем - id. А и хотя бы ваш getSig(). Это же имя инстанса или чо? В обработке PollEvent ищите в HashMap по id нужный ByteArrayOutputStream и читайте кусок из него - кусок возвращайте клинту. Тут бы ещё было хорошо почистить этот ByteArrayOutputStream. Но для этого вам понадобится сделать синхронизацию, чтобы с записью в вашем асинхронном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 16:18:12 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJOptionPane выкинуть к чертовой матери везде. Используйте logger я не очень поняла, давайте вы меня поправите... logger-ом я могу вывести то, что мне нужно в лог, а из лога в виде сообщения я эту информацию могу отобразить? Или... в файл, а потом читать из файла в FacesContext? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:05:58 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunlogger-ом я могу вывести то, что мне нужно в лог, а из лога в виде сообщения я эту информацию могу отобразить? Или... в файл, а потом читать из файла в FacesContext? Нет, логгер вам нужно использовать чтобы логировать исключение и отладочную информацию. Непосредственно к передаче лога SSH клиенту это отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:08:06 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palunlogger-ом я могу вывести то, что мне нужно в лог, а из лога в виде сообщения я эту информацию могу отобразить? Или... в файл, а потом читать из файла в FacesContext? Нет, логгер вам нужно использовать чтобы логировать исключение и отладочную информацию. Непосредственно к передаче лога SSH клиенту это отношения не имеет. ааа, а я то уже обнадеялась...)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:12:50 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunааа, а я то уже обнадеялась...)))) А почему вы обсуждаете что-то одно, а остальное просто игнорируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:13:45 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palunааа, а я то уже обнадеялась...)))) А почему вы обсуждаете что-то одно, а остальное просто игнорируете? что именно я проигнорировала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:18:05 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunчто именно я проигнорировала? Всё. Из 10 предложение прокоментировали самое не значильеное. Какой смысл вам что-то тогда вообще советовать? Две статьи дал про long polling. Хоть одну прочитали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:29:14 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palunчто именно я проигнорировала? Всё. Из 10 предложение прокоментировали самое не значильеное. Какой смысл вам что-то тогда вообще советовать? Две статьи дал про long polling. Хоть одну прочитали? а вы мой код читали, что в нем, кроме "in.available()" и "new String" не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:36:07 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunа вы мой код читали Нет, я ударился лбом об клавиатуру и получились коментарии к вашему коду. Oksana Palun, что в нем, кроме "in.available()" и "new String" не так? Кроме того что нет никакой передачи данных из SSH в pollListener? Как это реализовать через HashMap я вам и написал. Всё "так", если в виде proof of concept. Если говороить про продакшн коде, то код отстойный. Поэтоум я написал о тех улучшениях что стоит сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 17:52:01 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКроме того что нет никакой передачи данных из SSH в pollListener? Как это реализовать через HashMap я вам и написал. Я еще не совсем поняла как это реализовать, поэтому не спешу высказываться по данному поводу. Мне ж нужно надцать раз подумать, прежде чем написать вам что-либо, ибо плевки после каждого сообщения в мою сторону, как-то неблагоприятствуют обсуждению по теме... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 18:14:29 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunибо плевки после каждого сообщения в мою сторону, как-то неблагоприятствуют обсуждению по теме... Вам с Helen_Cobskee пора в клуб организоватся. Уж очень вы похожи. Игнорируете наводящие вопросы. Вызываете когнитивный диссонанс своими коментариями. И в конце-концов обижаетесь на язвительные коментарии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 18:23:47 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВызываете когнитивный диссонанс своими коментариями. И в конце-концов обижаетесь на язвительные коментарии. )))) действительно, чего бы это, все лишь язвительные комментарии ))))) BlazkowiczИгнорируете наводящие вопросы. да, вот такие вот мы, когда язвительные комментарии очень тесно переплетаются с наводящими вопросами, довольно трудно отвечать по существу. Мало быть хорошим программистом, нужно еще и общаться с людьми. А то, сказано много, а смысла мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 18:32:08 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИ в конце-концов обижаетесь на язвительные коментарии.Это как раз вполне нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 18:32:35 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovBlazkowiczИ в конце-концов обижаетесь на язвительные коментарии.Это как раз вполне нормально. Ну, стоит же как-то развивать в себе emotional intelligence и не обижатся на всех подряд хамов вроде меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 22:33:29 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Oksana Palunпропущено... А можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу. Ну вы же создаёте поток типа: UploadFileThread upt = new UploadFileThread(); Thread threadUploadFile = new Thread(upt); threadUploadFile.start(); вот и положите threadUploadFile в какой-нибудь map (application scope) с привязкой к пользователю. Положила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 17:55:07 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunПоложила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду? У потоков нет никаких логов. Вам нужно создать своё собственное хранилище для этих логов. Писать туда из потоков. Читать оттуда по PollEvent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 17:57:22 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Вот это уже читали? http://docs.oracle.com/cd/E15523_01/web.1111/b31974/adv_ads.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:02:21 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana PalunПоложила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду? У потоков нет никаких логов. Вам нужно создать своё собственное хранилище для этих логов. Писать туда из потоков. Читать оттуда по PollEvent. пыталась положить в FlowScope, он вообще ругается, говорит не знаю такого, положила в ApplicationScope, ложить ложит, но когда пытаюсь его считать по poolEvent там оказывается его нет, девается куда-то что-ли... куда еще можно положить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:02:33 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВот это уже читали? http://docs.oracle.com/cd/E15523_01/web.1111/b31974/adv_ads.htm прочитала, а как мне это поможет? Поток не может ничего положить в bindings... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:06:09 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunпрочитала, а как мне это поможет? Это официальная документация по ADF для вашей задачи. Oksana PalunПоток не может ничего положить в bindings... Или вы бросаете самодеятельность и делаете средставми JEE - ADF+JMS Или вы делаете свой собственный контейнер чтобы хранить ваши логи. Вы не можете сложить их куда-попало. Вам нужно создать своё собственное хранилище, так как в базе вы тоже их хранить не собираетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:48:46 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, а сервлеты и HTML вы знаете? Сделали бы уже iframe на странице и на сервлет его. Сервлет запускает ваш SSH и весь выхлоп пишет в Request, форматируя в HTML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:52:00 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИли вы делаете свой собственный контейнер чтобы хранить ваши логи. Вы не можете сложить их куда-попало. Вам нужно создать своё собственное хранилище, так как в базе вы тоже их хранить не собираетесь. С удоволствием, если пойму, что вы имеете в виду. Я в ADFContext создавала свой scope, но с ним тоже не получилось, он его тоже не видит почему-то. Вы это имели в виду, или еще что-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:53:12 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palun, а сервлеты и HTML вы знаете? Сделали бы уже iframe на странице и на сервлет его. Сервлет запускает ваш SSH и весь выхлоп пишет в Request, форматируя в HTML. ну такое городить в ADF это нехорошо, как по мне, он же вроде должен упрощать разработку web приложений, а не наоборот...должен быть выход, по идее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 18:55:24 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Вам надо создать глобальную переменную Код: sql 1. 2. 3. Когда стартуете задачу, то генерите для нее уникальный id - он будет ключом в этой Map. Задача кладет свои сообщения в этот Map. JSF компонент который показывает лог забирает оттуда сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:01:32 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunну такое городить в ADF это нехорошо, как по мне, он же вроде должен упрощать разработку web приложений, а не наоборот...должен быть выход, по идее. new Thread() это такой же ппц в ADF. Так что хуже не будет. В ADF есть выход и я вам привел уже ссылку на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:02:44 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
ну такое городить в ADF это нехорошо ADF это так нехорошо, что ничего хуже быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:03:18 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Blazkowicz и весь выхлоп пишет в Request В Response, конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:08:02 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Совсем забыл что кроме JMS можно ещё заюзать WorkManager. http://jdeveloperfaq.blogspot.com/2011/05/faq-34-using-weblogic-work-managers-to.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:11:03 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪВам надо создать глобальную переменную Код: sql 1. 2. 3. Когда стартуете задачу, то генерите для нее уникальный id - он будет ключом в этой Map. Задача кладет свои сообщения в этот Map. JSF компонент который показывает лог забирает оттуда сообщения. Работает! Спасибо, все гениальное, как всегда, просто! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:36:53 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Прям как в том анекдоте "ты не выпендривайся, ты пальцем покажи" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:41:20 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПрям как в том анекдоте "ты не выпендривайся, ты пальцем покажи" анекдот в студию... проблему решили, можно и поржать, только если смешной... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:44:51 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palunанекдот в студию... проблему решили, можно и поржать, только если смешной... Даже анекдот нагуглить не можете?В Южной Атлантике всплывает британская атомная подводная лодка. Из рубки высовывается капитан и кричит на проходящий торговый корабль: - Эй! Где здесь у вас Фолклендские острова? - Курс зюйд-зюйд-вест, сэр! - Ты не выпендривайся, ты пальцем покажи… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:47:43 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
[quot Blazkowicz] Даже анекдот нагуглить не можете? тяжолый случай )))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 19:52:55 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Работает! Спасибо, все гениальное, как всегда, просто! :) Отлично! Теперь осталось понять, что: 1)Эта глобальная переменная ведет к утечке памяти. Лучше засунуть сообщения в базу. 2)Самопальное создание потоков приведет к неприятностям. Внимательно прочитайте что вам пишет Blazkowicz. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 20:39:13 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪРаботает! Спасибо, все гениальное, как всегда, просто! :) Отлично! Теперь осталось понять, что: 1)Эта глобальная переменная ведет к утечке памяти. Лучше засунуть сообщения в базу. 2)Самопальное создание потоков приведет к неприятностям. Внимательно прочитайте что вам пишет Blazkowicz. ты чо - писать в базу это bad style:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 20:43:49 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪ1)Эта глобальная переменная ведет к утечке памяти. Лучше засунуть сообщения в базу. Это какая-то нелепая админка, там будет максимум пара одновременных процессов. Ну и map.remove() подлечит. Не думаю что там логов будет на сотни мегабайт. Йуный джавистЪ2)Самопальное создание потоков приведет к неприятностям. Все неприятности которые могли произойти с этим кодом уже произошли. Единственная проблема которая осталась это то, что если процесс запустить, пока он не отвалится, потушить сервер штатно будет не возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 20:45:51 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
ты чо - писать в базу это bad style:) Точно, я совсем забыл! Оракл же не масштабируется! Надо поставить рядом nosql субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2013, 20:46:33 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
забыл никты чо - писать в базу это bad style:) Смех смехом, но девушка пишет webv сервис по запуску БД. Использовать БД для хранения глобальной переменной, которая нужна на момент, когда БД не запущена, как-то слишком по Оракловски. :) P.S. Вот мы и подошли к необходимости иметь БД - каталог запущенных БД. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:03:56 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевзабыл никты чо - писать в базу это bad style:) Смех смехом, но девушка пишет webv сервис по запуску БД. Использовать БД для хранения глобальной переменной, которая нужна на момент, когда БД не запущена, как-то слишком по Оракловски. :) P.S. Вот мы и подошли к необходимости иметь БД - каталог запущенных БД. :) Смех смехом, но термин JMS проскочил уже по-моему на второй странице :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:09:15 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
забыл никСмех смехом, но термин JMS проскочил уже по-моему на второй странице :) На первой. ;) Ну, и JMS, в основном, усилино использует базу. И, в целом, решение держать логи где-либо, при том что их можно отдать сразу тоже не самое лучшее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:15:27 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИ, в целом, решение держать логи где-либо, при том что их можно отдать сразу тоже не самое лучшее. Есть плюсы - есть минусы. Можно еще логи держать в "энергонезависимом" ( ), а текущий статус в оперативной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:23:22 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Есть плюсы - есть минусы. Давайте обсудим плюсы polling-а в данном случае? Очень интересно в чем они? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:26:40 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вопрос был, как мне показалось, где держать Application scope переменную. Poll, как мне кажется, легче переживает смерть web frontend (и другие временные трудности в канале передачи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:37:16 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевВопрос был, как мне показалось, где держать Application scope переменную. Переменная не Application Scope, а session scope. Переменная не просто переменная а целый log. Сергей АрсеньевPoll, как мне кажется, легче переживает смерть web frontend (и другие временные трудности в канале передачи). [/quot] Да, для server push нужно убедится, что клиент умеет восстанавливать соединение. В Poll это не актуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 16:40:58 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПеременная не Application Scope, а session scope. Ну, у автора может стоять задача хранить лог дольше, чем сессия. Ну там кнопочку "старт" нажал и пошёл гулять, а потом через часок глянуть, как оно там стартанулось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:08:32 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunMOHAX777пропущено... Ну вы же создаёте поток типа: UploadFileThread upt = new UploadFileThread(); Thread threadUploadFile = new Thread(upt); threadUploadFile.start(); вот и положите threadUploadFile в какой-нибудь map (application scope) с привязкой к пользователю. Положила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду? в классе UploadFileThread у вас должен быть метод, который возвращает лог из переменной этого же класса. В свою очередь в эту переменную лог записывается в процессе выполнения скрипта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:10:36 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПеременная не Application Scope, а session scope. Переменная не просто переменная а целый log. Девушке как раз и нужна была Application scope. Ибо с ней работать должна была не одна сессия (не один процесс и не на одном компе). А то, что это лог (hashmap) состояний внешних процессов, как-то проидентифицированных. Это уже частности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:22:59 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Девушке как раз и нужна была Application scope. Это у вас инсайдерская инфа или как вы поняли? Сергей АрсеньевИбо с ней работать должна была не одна сессия (не один процесс и ... Юзер запускает процесс и получает лог. Где видно то что разные юзеры должны получать лог? Где написано что юзер должен с другого компа уметь прочитать лог процесса? Сергей Арсеньев...не на одном компе). И давно у нас Application Scope реплицируется? Или про какие "компы" речь? Сергей Арсеньев А то, что это лог (hashmap) состояний внешних процессов, как-то проидентифицированных. Это уже частности. ОК. Уговорили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:34:30 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЮзер запускает процесс и получает лог. Где видно то что разные юзеры должны получать лог? Где написано что юзер должен с другого компа уметь прочитать лог процесса? Чуть выше. Лог Юзеру на не нужен. Нужен барграф процента выполнения шеловского скрипта по запуску БД и пр. IMHO. Написать два сервлета общающихся через App scope переменную (хоть в БД хранящуюся) - самый простой рабочий говнокод. Один сервлет (jsp etc) отвечает пользователю что происходит с его задачей №100500, второй дергается из скрипта (например через wget) и отчитывается о том что в задаче №100500 строчка n выполнена перехожу на n+1. Плюс прочистка, плюс дополнительные агенты надзора плюс рефакторинг до бесконечности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:42:02 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Чуть выше. Лог Юзеру на не нужен. Нужен барграф процента выполнения шеловского скрипта по запуску БД и пр. Вот здесь: 13785688 Oksana вычитывает весь выхлоп команды чтобы показать юзеру. Как получить % выполнения при этом, я не очень понимаю. Сергей Арсеньев IMHO. Написать два сервлета общающихся через App scope переменную (хоть в БД хранящуюся) - самый простой рабочий говнокод. Один сервлет (jsp etc) отвечает пользователю что происходит с его задачей №100500, второй дергается из скрипта (например через wget) и отчитывается о том что в задаче №100500 строчка n выполнена перехожу на n+1. Плюс прочистка, плюс дополнительные агенты надзора плюс рефакторинг до бесконечности. Я уже описал свой вариант решения выше. На long polling оно всё делается на много проще - ничего нигде хранить вообще не нужно, решить нужно только одну проблему, использовать реализацию с нормальным восстановлением если клиент отвалился по таймауту или другой причине. Хотя, конечно, возможна проблема с тем, что если не вычитывать выхлоп, пока клиент отвалился, то серверный процесс замрет в ожидании. В этом случае я бы сделал буфер и при его переполнении просто сбрасывал его с другой стороны. Если юзера нет очень долго то и лог ему вряд ли нужен. Только состояние успешно или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:50:03 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНа long polling оно всё делается на много проще - ничего нигде хранить вообще не нужно Спорное утверждение. Лог можно хранить и по совсем другим причинам. Парсинг лога на предмет процентов, вообще говоря задача не сильно проще вставки wget. Да и прогресс запуска БД может быть интересен более чем одному пользователю, да и пытаться одновременно запустить ее два раза тоже давать не надо. Что также не добавляет простоты решению в одну сессию (а какой у нее pooling уже не важно). Но это все зависит от дополнительных требований. А так хорошая задачка для самообучения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:59:36 |
|
||
|
ProgressIndicator в ADF
|
|||
|---|---|---|---|
|
#18+
Смех смехом, но девушка пишет webv сервис по запуску БД. Чем они там занимаются, если им приходится запускать оракл из веб-интерфейса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2013, 03:24:25 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2130150]: |
0ms |
get settings: |
16ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
90ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
136ms |
get tp. blocked users: |
2ms |
| others: | 338ms |
| total: | 638ms |

| 0 / 0 |
