powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ProgressIndicator в ADF
91 сообщений из 91, показаны все 4 страниц
ProgressIndicator в ADF
    #38109901
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго здравия, дорогие коллеги.
Есть такая задача: имеется страница основанная на темплейте с кнопочками, по нажатию на кнопку выполняется коннект и прочие операции с удаленным сервером через ssh. Для корректного отображения процесса, хочется по нажатию этой же кнопочки, получать запуск и останов ProgressIndicator-а, но... все примеры, связанные с данным функционалом основаны на работе двух кнопочек "Старт" и "Стоп" - с ними все отлично работает. А вот с одной кнопкой никак, например, наипростейший вариант - запускать попап с прогрессом и закрывать его при выполнении процесса, оставляю в екшн методе кнопки запуск попапа и выполнение скрипта. Он запускается, ничего не делает какое-то время(кнопка в это врмя в состоянии недоступно), потом попап с прогрессом и сообщение лога выводятся вместе. Я так понимаю, все что в экшен листенере кнопки выполняется в одном потоке и поэтому получить результат отдельно нельзя.
Пробовала запускать попап через клиент листенер с помощью JavaScript, он и не ругается, но и ничего не делает, возможно, из-за того, что это темплейт и бины не видят друг-друга(не знаю как это еще объяснить).
В общем, кто как выходил из этой ситуации?
Использую JDev 11gR2
Как всегда, благодарна идеям :)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38110353
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понял :).
Если с двумя кнопочками всё работает, то непонятно, какая проблема переделать для одной кнопки?
В чём именно затык?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38110444
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Если вы хотите видеть прогресс выполнения длинной операции и возможность её прервать вам не обойтись без создания нового потока, в котором будет эта операция выполняться. А на view достаточно будет добавить компонент poll, который будет обновлять состояние progress indicator. Это если я всё правильно понял :)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38110535
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MOHAX777Это если я всё правильно понял :)
не совсем
MOHAX777В чём именно затык?
в том, что эти два процесса: отображение прогресса и сам процесс на сервере, выполняются в одном потоке, и получается, что как результат я получаю все скопом на выходе из екшн. листенера.
Поэтому их нужно как-то разграничить, мне подсказали 2 варианта: выделить выполнение процесса в отдельный поток, либо запускать его не по екшн листенеру кнопки, а по клиент листенеру, а по экшн листенеру отображение процесса ганять.
Попробую для начала 2й вариант, с разграничение потоков пока работать не приходилось.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38111803
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunв том, что эти два процесса: отображение прогресса и сам процесс на сервере, выполняются в одном потоке, и получается, что как результат я получаю все скопом на выходе из екшн. листенера.
Поэтому их нужно как-то разграничить, мне подсказали 2 варианта: выделить выполнение процесса в отдельный поток, либо запускать его не по екшн листенеру кнопки, а по клиент листенеру, а по экшн листенеру отображение процесса ганять.
Попробую для начала 2й вариант, с разграничение потоков пока работать не приходилось.
Про первый вариант я вам в p.s. как раз и описал, а вот про второй вариант у меня сильные сомнения, что такое вообще возможно.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38111889
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MOHAX777Про первый вариант я вам в p.s. как раз и описал, а вот про второй вариант у меня сильные сомнения, что такое вообще возможно.
попробовала, возможно, но не в моем случае. Т.к. у меня на клиенте работа с радиоБаттонами, приходится сетить переменные, а вызов по клиентлистенеру все переменные обнуляет. Так шо "факир был пьян и фокус неудался", выделила выполнение скрипта в отдельный поток, все отрабатывает, НО, мне нужно выводить лог этого скрипта в виде сообщения на клиент, а FacesContext из потока не виден. Передать его в бин никак не могу, поскольку информация по процессу умирает вместе с потоком...
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113657
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun,

Используйте poll, в котором берите текст из потока и выводите на экран. Не вижу проблем.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113678
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOHAX777Oksana Palun,
Используйте poll, в котором берите текст из потока и выводите на экран. Не вижу проблем.
13774749 и ниже.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113828
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczMOHAX777Oksana Palun,
Используйте poll, в котором берите текст из потока и выводите на экран. Не вижу проблем.
13774749 и ниже.

метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113841
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOHAX777метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции.
Так у Oksana Palun проблема в том что она не может передать данные из контекста запроса\ответа в асинхронную задачу и из асинхронной задачи обратно в контекста запроса\ответа.
Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу, пытается использовать facecontext в самой асинхронной задаче.
Опять же все эти пляски со своими потоками в JEE вообще не рекомендуются без JMS. Тем более, если опыта работы с многопоточностью минимум.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113845
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOHAX777метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции.
И ещё не понятно куда буферизировать лог до того как следующий poll пришел. А если он ещё и жирный?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113873
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczMOHAX777метод poll будет видеть facecontext, поэтому туда можно будет вывести лог из потока операции.
Так у Oksana Palun проблема в том что она не может передать данные из контекста запроса\ответа в асинхронную задачу и из асинхронной задачи обратно в контекста запроса\ответа.
Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу, пытается использовать facecontext в самой асинхронной задаче.
Опять же все эти пляски со своими потоками в JEE вообще не рекомендуются без JMS. Тем более, если опыта работы с многопоточностью минимум.
Я делала и так и так. С пулом не сложилось, потому, что метод, который нужно вызывать в пуле, вызывается из бина, где инициализированы переменные, которые устанавливаются на клиенте. При срабатывании пула, они обнуляются, где это настраивается, если настраивается, я не нашла. Поэтому перешла к варианту с потоками,

"Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу"

в поток я данные с клиента передаю, но задача в потоке возвращает лог, это совсем другие данные, которые нужно вернуть в facecontext. Ожидать этот лог, в клиентском бине, смысле не имеет, это будет то же самое, что и просто выполнение процесса по кнопке.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38113916
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunЯ делала и так и так.

Как и как?

Oksana PalunС пулом не сложилось, потому, что метод, который нужно вызывать в пуле, вызывается из бина, где инициализированы переменные, которые устанавливаются на клиенте. При срабатывании пула, они обнуляются, где это настраивается, если настраивается, я не нашла. Поэтому перешла к варианту с потоками,

Что такое "пул" в вашем понимании в этой теме, по-моему ещё никто не понял. Вы pool и poll часом не путаете?

Oksana Palun"Вместо того чтобы получить данные из facecontext и положить в асинхронную задачу"
в поток я данные с клиента передаю,
Вы не можете прямо с "клиента" передать данные в поток. Клиент отправляет данные на сервер, и этот запрос уже обрабатывается в контексте JSF. А там вы собираете данные из запроса и помещаета в "свой поток".
Вы бы уже, что ли, код показали. Потому что в вашей персональной терминологии, разобратся сложно.

Oksana Palunно задача в потоке возвращает лог, это совсем другие данные,

Мы и не ожидали что это будут "те же самые данные".

Oksana Palunкоторые нужно вернуть в facecontext.
Данные нужно сложить куда-то и замапить на id юзера\клиента\задачи\сессии. А потом когда запрос придёт ещё раз с клиента (если реализовать poll). Найти лог по id и вернуть.

Oksana PalunОжидать этот лог, в клиентском бине, смысле не имеет, это будет то же самое, что и просто выполнение процесса по кнопке.
Что такое "клиентский бин"? Не нужно ничего "ожидать".
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114015
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunЯ делала и так и так. С пулом не сложилось, потому, что метод, который нужно вызывать в пуле, вызывается из бина, где инициализированы переменные, которые устанавливаются на клиенте. При срабатывании пула, они обнуляются, где это настраивается, если настраивается, я не нашла. Поэтому перешла к варианту с потоками


Вы как-то странно рассматриваете задачу, потоки и poll не должны расматриваться как "или то или другое". В данном случае они работают вместе:

1. По нажатии на кнопку "Пуск" создаётся поток, который сохраняется в application scope с привязкой к пользователю. В этом потоке есть метод, который отдаёт текущий лог.
2. Запускается poll с нужным интервалом, при этом в методе этого poll берётся нужный поток и вызывается метод, который возвращает лог. Этот лог выводим на экран. В случае, если поток завершил работу, то "дизэйблим" poll и "чистим" поток.

Проблемы:
1. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач.
2. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи. Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции. Может, уважаемый Blazkowicz прояснит этот момент.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114036
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOHAX7771. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач.

В этом случае имеет смысл сразу брать JMS или любую готовую MQ. Городить очереди в базе, это уже попахивает лисопедом.

MOHAX7772. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи.

Сервер точно не может знать когда юзер отвалился, разве что если сессия явно инвалидирована. Если асинхронная задача имеет цикличность, то, да. Можно в цикле проверять валидность сессии. Но, как я понимаю, из постановки задачи в данном случае там запускается какой-то тормозной скрипт, поэтому прервать его получится вряд ли. Разве что если оно понимает Thread.interrupt() нормально. Т.е. это нужно смотреть на то какая конкретно там задача решается асинхронно. Можно её прибить или нет.

MOHAX777Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции.
Вот именно поэтому для данной задачи, я бы использовал COMET/Long Polling, чтобы лог незамедлительно слать клиенту. Нечего его на сервере хранить и потом ещё не известно когда чистить.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114039
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MOHAX7771. По нажатии на кнопку "Пуск" создаётся поток, который сохраняется в application scope с привязкой к пользователю. В этом потоке есть метод, который отдаёт текущий лог.
2. Запускается poll с нужным интервалом, при этом в методе этого poll берётся нужный поток и вызывается метод, который возвращает лог. Этот лог выводим на экран. В случае, если поток завершил работу, то "дизэйблим" poll и "чистим" поток.

А можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу.

MOHAX777Проблемы:
1. если приложение валиться, то задачи мрут, если нужно их сохранение, то имеет смысл задействовать БД для хранения задач.
2. Необходимо чистить сохранённые в application scope потоки, если пользователь вышел/отвалился до завершения задачи. Впрочем, его CG может автоматом убрать, но тогда надо думать, где сохранять лог операции. Может, уважаемый Blazkowicz прояснит этот момент.
Про отвалы мне уже говорили, пока даже и не думала, об этом. Будем решать проблемы по мере их поступления, задача вроде не должна отрабатывать дольше 10ти минут, а за это время он не валится. И кстати, есть ли в ADF возможность управления временем жизни сессий?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114041
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczТ.е. это нужно смотреть на то какая конкретно там задача решается асинхронно. Можно её прибить или нет.
Поднятие/останов инстансов на линуксовом сервере.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114044
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunА можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу.


Извините но с каждым новым вашим сообщением возникает все большее желание поставить смайлик фейспалм. Ваша терминология просто взрывает мозг, выложите уже код, пожалуйста
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114053
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunЯ создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу.
Фак мой мозг. Сделайте HashMap с ключем http session id и значением ваш Thread. Хотя асинхронную задачу стоило инкапсулировать в что-то более приличное: Runnable, Сallable и т.п.

Oksana PalunИ кстати, есть ли в ADF возможность управления временем жизни сессий?
Google->ADF invalidate session
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114066
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114074
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunПоднятие/останов инстансов на линуксовом сервере.
инстанс это "экземпляр". "экземпляр" он обычно чего-то (класса, SQL сервера и т.п.)? Это реализовано на pure Java, или запускается внешний процесс?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114077
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczФак мой мозг. Сделайте HashMap с ключем http session id и значением ваш Thread. Хотя асинхронную задачу стоило инкапсулировать в что-то более приличное: Runnable, Сallable и т.п.


Вы конечно понимаете, но для ТС надо бы уточнение чтобы она не забывала регулярно чистить эту мапу
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114080
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никИзвините но с каждым новым вашим сообщением возникает все большее желание поставить смайлик фейспалм. Ваша терминология просто взрывает мозг
Ставьте, если очень хочется, я ADF только учу, поэтому ничего странного, что моя терминология хромает, о чем я Вас предупреждала ранее. Если вы бедете просто рассказывать, как неправильно я выражаюсь, будет менее эффективно, если вы меня поправите.
забыл никвыложите уже код, пожалуйста
ОК
1.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class ExecShell
 implements Runnable
{
  private String lcommand;
  public ExecShell()
  {
    super();
  }
  public ExecShell(String acommand)
  {
    lcommand = acommand;
  }
  public void run()
  {
    execShellCommand(lcommand);//здесь запускается процесс обработки данных по  SSH
  }


2. Создание потока в бине(manage bean) по actionListener
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  public void schemeAction()
    throws SQLException, URISyntaxException, IOException,
           PropertyVetoException, JSchException, InterruptedException
  {
    String scriptPath = "/ora/scripts/";
    if (getSchAction() != null)
    {
      if (getSchAction().equals("setUp")) // поднять
      {
        Thread t = new Thread(new ExecShell(scriptPath + "start_db_common " + getSig()));
         t.setName("eSh");
         t.start();
....


3. pool
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
               <af:poll id="pull"
                       binding="#{backingBeanScope.backing_fragments_Versions.pull}"
                       interval="10" partialTriggers="pull"
                       clientComponent="true">
                <af:clientListener method="isJobDone" type="poll"/>
                <af:serverListener type="pollListener"
                                   method="#{backingBeanScope.backing_fragments_Versions.pollListener}"/>
              </af:poll>


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  public void pollListener(ClientEvent aEvent)
    throws InterruptedException
  {
   if (progressPopup.initialStateMarked()){
       Object[] obj =  Thread.getAllStackTraces().keySet().toArray();
        // ?
       }
       new PopupUtil().hidePopup(progressPopup.getClientId(FacesContext.getCurrentInstance()));
     }
  }
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114085
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
  public static Session createSession()
  {
    Session session = null;
    try
    {
      JSch jsch = new JSch();
      String user = "oracle";
      String pass = "...";
      String host = "photon";
      session = jsch.getSession(user, host, 22);
      session.setPassword(pass);
      session.setConfig("StrictHostKeyChecking", "no");
      session.connect();
    }
    catch (Exception e)
    {
      FacesContext.getCurrentInstance().addMessage(null,
                                                   new FacesMessage(e.getMessage()));
      e.printStackTrace();
    }
    return session;
  }

  public static void execShellCommand(String command)
  {
    try
    {
      Session session = createSession();
      Channel channel = null;
      try
      {
        byte[] tmp = new byte[1024];
        channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);
        channel.setInputStream(null);
        ((ChannelExec) channel).setErrStream(System.err);
        InputStream in = channel.getInputStream();
        channel.connect();
        while (true)
        {
          while (in.available() > 0)
          {
            int i = in.read(tmp, 0, 1024);
            if (i < 0)
              break;
              JOptionPane.showMessageDialog(new JFrame("Message"),  new String(tmp,
                                                                                     0,
                                                                                     i));
          }
          if (channel.isClosed())
          {
            System.out.println("exit-status: " + channel.getExitStatus());
            break;
          }
          try
          {
            Thread.sleep(1000);
          }
          catch (Exception ee)
          {
           JOptionPane.showMessageDialog(new JFrame("Message"), ee.getMessage());
          }
        }
        channel.disconnect();
        session.disconnect();
        System.out.println("DONE");

      }
      catch (Exception e)
      {
        JOptionPane.showMessageDialog(new JFrame("Message"),e.getMessage());
        e.printStackTrace();
      }
    }
    catch (Exception e)
    {
      System.out.println(e);
    }
  }
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114107
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никВы конечно понимаете, но для ТС надо бы уточнение чтобы она не забывала регулярно чистить эту мапу
И это не такая простая проблема, как может показатся на первый взгляд.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114113
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть не подымаете вы там никакой инстанс, а просто посылаете команду по SSH. В такой постоновке задачи прибить работающий процесс будут сложно, да и вообще не безопасно. Единственное стоит предусмотреть механизм защиты от повторного запуска.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114118
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczзабыл никВы конечно понимаете, но для ТС надо бы уточнение чтобы она не забывала регулярно чистить эту мапу
И это не такая простая проблема, как может показатся на первый взгляд.

Ну, до этого места ТС ещё не добралась, не пугайте её.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114119
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczТо есть не подымаете вы там никакой инстанс, а просто посылаете команду по SSH.
да, я посылаю команду, которая поднимает инстанс, вся работа идет на том сервере..
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114122
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оксана,
у меня, конечно закрадывались подозрения, но я их почему-то отбрасывал. У вас ADF свинговый??? Не WEB?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114124
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MOHAX777Ну, до этого места ТС ещё не добралась, не пугайте её.
та пугайте, "предупрежден, значит вооружон" :)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114127
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunда, я посылаю команду, которая поднимает инстанс, вся работа идет на том сервере..
Научитесь отделять зерна от плевел. В контексте вашей проблемы абсолютно до жопы что там происходит на сервере. В вашей задаче вы просто выполняете команду по SSH.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114129
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczОксана,
у меня, конечно закрадывались подозрения, но я их почему-то отбрасывал. У вас ADF свинговый??? Не WEB?
ADF бывает свинговый? Вообще, в нем можно успешно совмещать и то и то.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114131
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palunда, я посылаю команду, которая поднимает инстанс, вся работа идет на том сервере..
Научитесь отделять зерна от плевел. В контексте вашей проблемы абсолютно до жопы что там происходит на сервере. В вашей задаче вы просто выполняете команду по SSH.
ок
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114133
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun,
Почему в одном месте так
Код: java
1.
2.
FacesContext.getCurrentInstance().addMessage(null,
                                                   new FacesMessage(e.getMessage()));

а в другом так
Код: java
1.
JOptionPane.showMessageDialog(new JFrame("Message"),  new String(tmp,



Так старайтесь не делать
Код: java
1.
          catch (Exception ee)



А вот так не делайте никогда
Код: java
1.
2.
3.
4.
    catch (Exception e)
    {
      System.out.println(e);
    }
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114134
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunADF бывает свинговый?

На сколько я знаю - да. На сколько это актуально - не знаю.

Oksana PalunВообще, в нем можно успешно совмещать и то и то.
Вы таки расскажите у вас у юзера Web страница в браузере или Swing GUI окошко. Оба?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114141
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palun,
Почему в одном месте так
Код: java
1.
2.
FacesContext.getCurrentInstance().addMessage(null,
                                                   new FacesMessage(e.getMessage()));

а в другом так
Код: java
1.
JOptionPane.showMessageDialog(new JFrame("Message"),  new String(tmp,



ну потому же, что в потоке FacesContext недоступен...
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114144
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczВы таки расскажите у вас у юзера Web страница в браузере или Swing GUI окошко. Оба?
только Web
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114146
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oksana Palunну потому же, что в потоке FacesContext недоступен...
это я уже извратилась, чтобы хоть как-то лог клиенту отобразить, без сохранения ее в БД/файл и пр.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114224
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunэто я уже извратилась, чтобы хоть как-то лог клиенту отобразить, без сохранения ее в БД/файл и пр.
JOptionPane выкинуть к чертовой матери везде.
Используйте logger, в случае ошибок.
Это абслютно не верное условие.
Код: java
1.
while (in.available() > 0)

Откройте любой пример про InputStream и возьмите перекачку оттуда. А ещё лучше Apache Commons IOUtils.copy()

Вместо new String(tmp копируйте в ByteArrayOutputStream
ByteArrayOutputStream храните значением в HashMap, а ключем - id. А и хотя бы ваш getSig(). Это же имя инстанса или чо?
В обработке PollEvent ищите в HashMap по id нужный ByteArrayOutputStream и читайте кусок из него - кусок возвращайте клинту.
Тут бы ещё было хорошо почистить этот ByteArrayOutputStream. Но для этого вам понадобится сделать синхронизацию, чтобы с записью в вашем асинхронном потоке.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114303
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczJOptionPane выкинуть к чертовой матери везде.
Используйте logger
я не очень поняла, давайте вы меня поправите... logger-ом я могу вывести то, что мне нужно в лог, а из лога в виде сообщения я эту информацию могу отобразить? Или... в файл, а потом читать из файла в FacesContext?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114307
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunlogger-ом я могу вывести то, что мне нужно в лог, а из лога в виде сообщения я эту информацию могу отобразить? Или... в файл, а потом читать из файла в FacesContext?
Нет, логгер вам нужно использовать чтобы логировать исключение и отладочную информацию. Непосредственно к передаче лога SSH клиенту это отношения не имеет.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114319
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palunlogger-ом я могу вывести то, что мне нужно в лог, а из лога в виде сообщения я эту информацию могу отобразить? Или... в файл, а потом читать из файла в FacesContext?
Нет, логгер вам нужно использовать чтобы логировать исключение и отладочную информацию. Непосредственно к передаче лога SSH клиенту это отношения не имеет.
ааа, а я то уже обнадеялась...))))
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114322
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunааа, а я то уже обнадеялась...))))
А почему вы обсуждаете что-то одно, а остальное просто игнорируете?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114329
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palunааа, а я то уже обнадеялась...))))
А почему вы обсуждаете что-то одно, а остальное просто игнорируете?
что именно я проигнорировала?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114350
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunчто именно я проигнорировала?
Всё. Из 10 предложение прокоментировали самое не значильеное. Какой смысл вам что-то тогда вообще советовать? Две статьи дал про long polling. Хоть одну прочитали?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114357
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palunчто именно я проигнорировала?
Всё. Из 10 предложение прокоментировали самое не значильеное. Какой смысл вам что-то тогда вообще советовать? Две статьи дал про long polling. Хоть одну прочитали?
а вы мой код читали, что в нем, кроме "in.available()" и "new String" не так?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114386
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunа вы мой код читали
Нет, я ударился лбом об клавиатуру и получились коментарии к вашему коду.

Oksana Palun, что в нем, кроме "in.available()" и "new String" не так?
Кроме того что нет никакой передачи данных из SSH в pollListener? Как это реализовать через HashMap я вам и написал.
Всё "так", если в виде proof of concept. Если говороить про продакшн коде, то код отстойный. Поэтоум я написал о тех улучшениях что стоит сделать.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114424
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczКроме того что нет никакой передачи данных из SSH в pollListener? Как это реализовать через HashMap я вам и написал.

Я еще не совсем поняла как это реализовать, поэтому не спешу высказываться по данному поводу. Мне ж нужно надцать раз подумать, прежде чем написать вам что-либо, ибо плевки после каждого сообщения в мою сторону, как-то неблагоприятствуют обсуждению по теме...
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114433
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunибо плевки после каждого сообщения в мою сторону, как-то неблагоприятствуют обсуждению по теме...
Вам с Helen_Cobskee пора в клуб организоватся. Уж очень вы похожи. Игнорируете наводящие вопросы. Вызываете когнитивный диссонанс своими коментариями. И в конце-концов обижаетесь на язвительные коментарии.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114444
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczВызываете когнитивный диссонанс своими коментариями. И в конце-концов обижаетесь на язвительные коментарии.
)))) действительно, чего бы это, все лишь язвительные комментарии )))))
BlazkowiczИгнорируете наводящие вопросы.
да, вот такие вот мы, когда язвительные комментарии очень тесно переплетаются с наводящими вопросами, довольно трудно отвечать по существу. Мало быть хорошим программистом, нужно еще и общаться с людьми. А то, сказано много, а смысла мало.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114445
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИ в конце-концов обижаетесь на язвительные коментарии.Это как раз вполне нормально.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38114622
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovBlazkowiczИ в конце-концов обижаетесь на язвительные коментарии.Это как раз вполне нормально.
Ну, стоит же как-то развивать в себе emotional intelligence и не обижатся на всех подряд хамов вроде меня.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115802
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MOHAX777Oksana Palunпропущено...

А можете мне про этот метод рассказать подробнее? Я создала поток, по пулу пытаюсь его найти, из видимых мне, на данный момент способов, это список StackTraces у Thread, он его видит, но ничего считать я не могу.

Ну вы же создаёте поток типа:

UploadFileThread upt = new UploadFileThread();
Thread threadUploadFile = new Thread(upt);
threadUploadFile.start();

вот и положите threadUploadFile в какой-нибудь map (application scope) с привязкой к пользователю.

Положила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115804
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunПоложила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду?
У потоков нет никаких логов. Вам нужно создать своё собственное хранилище для этих логов. Писать туда из потоков. Читать оттуда по PollEvent.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115814
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115815
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana PalunПоложила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду?
У потоков нет никаких логов. Вам нужно создать своё собственное хранилище для этих логов. Писать туда из потоков. Читать оттуда по PollEvent.
пыталась положить в FlowScope, он вообще ругается, говорит не знаю такого, положила в ApplicationScope, ложить ложит, но когда пытаюсь его считать по poolEvent там оказывается его нет, девается куда-то что-ли... куда еще можно положить?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115819
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczВот это уже читали?
http://docs.oracle.com/cd/E15523_01/web.1111/b31974/adv_ads.htm
прочитала, а как мне это поможет? Поток не может ничего положить в bindings...
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115871
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunпрочитала, а как мне это поможет?
Это официальная документация по ADF для вашей задачи.

Oksana PalunПоток не может ничего положить в bindings...
Или вы бросаете самодеятельность и делаете средставми JEE - ADF+JMS
Или вы делаете свой собственный контейнер чтобы хранить ваши логи.
Вы не можете сложить их куда-попало. Вам нужно создать своё собственное хранилище, так как в базе вы тоже их хранить не собираетесь.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115874
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun, а сервлеты и HTML вы знаете? Сделали бы уже iframe на странице и на сервлет его. Сервлет запускает ваш SSH и весь выхлоп пишет в Request, форматируя в HTML.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115876
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczИли вы делаете свой собственный контейнер чтобы хранить ваши логи.
Вы не можете сложить их куда-попало. Вам нужно создать своё собственное хранилище, так как в базе вы тоже их хранить не собираетесь.
С удоволствием, если пойму, что вы имеете в виду. Я в ADFContext создавала свой scope, но с ним тоже не получилось, он его тоже не видит почему-то. Вы это имели в виду, или еще что-то?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115879
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palun, а сервлеты и HTML вы знаете? Сделали бы уже iframe на странице и на сервлет его. Сервлет запускает ваш SSH и весь выхлоп пишет в Request, форматируя в HTML.
ну такое городить в ADF это нехорошо, как по мне, он же вроде должен упрощать разработку web приложений, а не наоборот...должен быть выход, по идее.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115886
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо создать глобальную переменную
Код: sql
1.
2.
3.
class TaskProgressLogs{
  public static Map<Long,List<String>> messages;
}


Когда стартуете задачу, то генерите для нее уникальный id - он будет ключом в этой Map. Задача кладет свои сообщения в этот Map. JSF компонент который показывает лог забирает оттуда сообщения.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115890
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunну такое городить в ADF это нехорошо, как по мне, он же вроде должен упрощать разработку web приложений, а не наоборот...должен быть выход, по идее.
new Thread() это такой же ппц в ADF. Так что хуже не будет. В ADF есть выход и я вам привел уже ссылку на него.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115891
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну такое городить в ADF это нехорошо
ADF это так нехорошо, что ничего хуже быть не может.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115901
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz и весь выхлоп пишет в Request
В Response, конечно же.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115908
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем забыл что кроме JMS можно ещё заюзать WorkManager.
http://jdeveloperfaq.blogspot.com/2011/05/faq-34-using-weblogic-work-managers-to.html
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115934
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Йуный джавистЪВам надо создать глобальную переменную
Код: sql
1.
2.
3.
class TaskProgressLogs{
  public static Map<Long,List<String>> messages;
}


Когда стартуете задачу, то генерите для нее уникальный id - он будет ключом в этой Map. Задача кладет свои сообщения в этот Map. JSF компонент который показывает лог забирает оттуда сообщения.
Работает! Спасибо, все гениальное, как всегда, просто! :)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115937
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прям как в том анекдоте "ты не выпендривайся, ты пальцем покажи"
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115940
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczПрям как в том анекдоте "ты не выпендривайся, ты пальцем покажи"
анекдот в студию...
проблему решили, можно и поржать, только если смешной...
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115943
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunанекдот в студию...
проблему решили, можно и поржать, только если смешной...
Даже анекдот нагуглить не можете?В Южной Атлантике всплывает британская атомная подводная лодка. Из рубки высовывается капитан и кричит на проходящий торговый корабль:
- Эй! Где здесь у вас Фолклендские острова?
- Курс зюйд-зюйд-вест, сэр!
- Ты не выпендривайся, ты пальцем покажи…
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115949
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Blazkowicz]
Даже анекдот нагуглить не можете?
тяжолый случай ))))))
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115988
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает! Спасибо, все гениальное, как всегда, просто! :)

Отлично! Теперь осталось понять, что:
1)Эта глобальная переменная ведет к утечке памяти. Лучше засунуть сообщения в базу.
2)Самопальное создание потоков приведет к неприятностям. Внимательно прочитайте что вам пишет Blazkowicz.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115991
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪРаботает! Спасибо, все гениальное, как всегда, просто! :)

Отлично! Теперь осталось понять, что:
1)Эта глобальная переменная ведет к утечке памяти. Лучше засунуть сообщения в базу.
2)Самопальное создание потоков приведет к неприятностям. Внимательно прочитайте что вам пишет Blazkowicz.

ты чо - писать в базу это bad style:)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115994
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ1)Эта глобальная переменная ведет к утечке памяти. Лучше засунуть сообщения в базу.

Это какая-то нелепая админка, там будет максимум пара одновременных процессов. Ну и map.remove() подлечит. Не думаю что там логов будет на сотни мегабайт.

Йуный джавистЪ2)Самопальное создание потоков приведет к неприятностям.

Все неприятности которые могли произойти с этим кодом уже произошли. Единственная проблема которая осталась это то, что если процесс запустить, пока он не отвалится, потушить сервер штатно будет не возможно.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38115997
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты чо - писать в базу это bad style:)
Точно, я совсем забыл! Оракл же не масштабируется! Надо поставить рядом nosql субд.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118278
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никты чо - писать в базу это bad style:)
Смех смехом, но девушка пишет webv сервис по запуску БД.
Использовать БД для хранения глобальной переменной, которая нужна на момент, когда БД не запущена, как-то слишком по Оракловски. :)

P.S. Вот мы и подошли к необходимости иметь БД - каталог запущенных БД. :)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118291
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевзабыл никты чо - писать в базу это bad style:)
Смех смехом, но девушка пишет webv сервис по запуску БД.
Использовать БД для хранения глобальной переменной, которая нужна на момент, когда БД не запущена, как-то слишком по Оракловски. :)

P.S. Вот мы и подошли к необходимости иметь БД - каталог запущенных БД. :)

Смех смехом, но термин JMS проскочил уже по-моему на второй странице :)
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118303
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никСмех смехом, но термин JMS проскочил уже по-моему на второй странице :)
На первой. ;)
Ну, и JMS, в основном, усилино использует базу.
И, в целом, решение держать логи где-либо, при том что их можно отдать сразу тоже не самое лучшее.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118319
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИ, в целом, решение держать логи где-либо, при том что их можно отдать сразу тоже не самое лучшее.
Есть плюсы - есть минусы.
Можно еще логи держать в "энергонезависимом" (
), а текущий статус в оперативной.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118328
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Есть плюсы - есть минусы.

Давайте обсудим плюсы polling-а в данном случае? Очень интересно в чем они?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118355
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Вопрос был, как мне показалось, где держать Application scope переменную.

Poll, как мне кажется, легче переживает смерть web frontend (и другие временные трудности в канале передачи).
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118360
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевВопрос был, как мне показалось, где держать Application scope переменную.

Переменная не Application Scope, а session scope.
Переменная не просто переменная а целый log.

Сергей АрсеньевPoll, как мне кажется, легче переживает смерть web frontend (и другие временные трудности в канале передачи).
[/quot]
Да, для server push нужно убедится, что клиент умеет восстанавливать соединение. В Poll это не актуально.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118406
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПеременная не Application Scope, а session scope.


Ну, у автора может стоять задача хранить лог дольше, чем сессия. Ну там кнопочку "старт" нажал и пошёл гулять, а потом через часок глянуть, как оно там стартанулось.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118413
MOHAX777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunMOHAX777пропущено...

Ну вы же создаёте поток типа:

UploadFileThread upt = new UploadFileThread();
Thread threadUploadFile = new Thread(upt);
threadUploadFile.start();

вот и положите threadUploadFile в какой-нибудь map (application scope) с привязкой к пользователю.

Положила, сам поток получила. А вот его лог ну никак не пойму как считать, там можно только StackTrace считать, но в нем информация по логам нет. Какой именно метод вы имели в виду?

в классе UploadFileThread у вас должен быть метод, который возвращает лог из переменной этого же класса. В свою очередь в эту переменную лог записывается в процессе выполнения скрипта.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118449
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПеременная не Application Scope, а session scope.
Переменная не просто переменная а целый log.
Девушке как раз и нужна была Application scope. Ибо с ней работать должна была не одна сессия (не один процесс и не на одном компе).
А то, что это лог (hashmap) состояний внешних процессов, как-то проидентифицированных.
Это уже частности.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118470
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Девушке как раз и нужна была Application scope.

Это у вас инсайдерская инфа или как вы поняли?

Сергей АрсеньевИбо с ней работать должна была не одна сессия (не один процесс и ...

Юзер запускает процесс и получает лог. Где видно то что разные юзеры должны получать лог? Где написано что юзер должен с другого компа уметь прочитать лог процесса?

Сергей Арсеньев...не на одном компе).

И давно у нас Application Scope реплицируется? Или про какие "компы" речь?

Сергей Арсеньев А то, что это лог (hashmap) состояний внешних процессов, как-то проидентифицированных.
Это уже частности.
ОК. Уговорили.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118479
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЮзер запускает процесс и получает лог. Где видно то что разные юзеры должны получать лог? Где написано что юзер должен с другого компа уметь прочитать лог процесса?
Чуть выше. Лог Юзеру на не нужен. Нужен барграф процента выполнения шеловского скрипта по запуску БД и пр.

IMHO. Написать два сервлета общающихся через App scope переменную (хоть в БД хранящуюся) - самый простой рабочий говнокод. Один сервлет (jsp etc) отвечает пользователю что происходит с его задачей №100500, второй дергается из скрипта (например через wget) и отчитывается о том что в задаче №100500 строчка n выполнена перехожу на n+1.

Плюс прочистка, плюс дополнительные агенты надзора плюс рефакторинг до бесконечности.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118492
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Чуть выше. Лог Юзеру на не нужен. Нужен барграф процента выполнения шеловского скрипта по запуску БД и пр.

Вот здесь: 13785688
Oksana вычитывает весь выхлоп команды чтобы показать юзеру. Как получить % выполнения при этом, я не очень понимаю.

Сергей Арсеньев IMHO. Написать два сервлета общающихся через App scope переменную (хоть в БД хранящуюся) - самый простой рабочий говнокод. Один сервлет (jsp etc) отвечает пользователю что происходит с его задачей №100500, второй дергается из скрипта (например через wget) и отчитывается о том что в задаче №100500 строчка n выполнена перехожу на n+1.
Плюс прочистка, плюс дополнительные агенты надзора плюс рефакторинг до бесконечности.
Я уже описал свой вариант решения выше. На long polling оно всё делается на много проще - ничего нигде хранить вообще не нужно, решить нужно только одну проблему, использовать реализацию с нормальным восстановлением если клиент отвалился по таймауту или другой причине.
Хотя, конечно, возможна проблема с тем, что если не вычитывать выхлоп, пока клиент отвалился, то серверный процесс замрет в ожидании. В этом случае я бы сделал буфер и при его переполнении просто сбрасывал его с другой стороны. Если юзера нет очень долго то и лог ему вряд ли нужен. Только состояние успешно или нет.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118509
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНа long polling оно всё делается на много проще - ничего нигде хранить вообще не нужно
Спорное утверждение. Лог можно хранить и по совсем другим причинам.
Парсинг лога на предмет процентов, вообще говоря задача не сильно проще вставки wget.

Да и прогресс запуска БД может быть интересен более чем одному пользователю, да и пытаться одновременно запустить ее два раза тоже давать не надо.
Что также не добавляет простоты решению в одну сессию (а какой у нее pooling уже не важно).

Но это все зависит от дополнительных требований.

А так хорошая задачка для самообучения.
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38118939
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смех смехом, но девушка пишет webv сервис по запуску БД.

Чем они там занимаются, если им приходится запускать оракл из веб-интерфейса?
...
Рейтинг: 0 / 0
ProgressIndicator в ADF
    #38119187
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪ,

Ну написали же Oracle подобное в своем Enterprise Manager.
...
Рейтинг: 0 / 0
91 сообщений из 91, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / ProgressIndicator в ADF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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