|
|
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Добрый день. Ситуация: Есть jsp с кнопкой submit.Сабмит вызывает метод сервлета, который коннектится к Oracle и вызывает процедуру с помощью executeUpdate() (процедура легкая-запускает JOBы по их ID).После этого идет переход обратно на jsp с сообщением о том что выполнено. Вопрос: Сервлет ждет пока выполниться процедура в вызванном JOBе . Можно ли не ждать пока выполниться executeUpdate и сразу перейти обратно на jsp? В процедуре и JOBах уверен заранее. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 13:17 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeвызывает процедуру с помощью executeUpdate() (процедура легкая-запускает JOBы по их ID) Почему не execute() ? altjkeВопрос: Сервлет ждет пока выполниться процедура в вызванном JOBе . Можно ли не ждать пока выполниться executeUpdate и сразу перейти обратно на jsp? Можно не ждать. AJAX, JEE WorkManager, Asynchronous Processing (Servlet 3.0) и 100500 аналогичных способов запустить фоновый процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 13:24 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke, Сразу в процедуре асинхронно запускать джоб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 13:36 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Blazkowiczaltjkeвызывает процедуру с помощью executeUpdate() (процедура легкая-запускает JOBы по их ID) Почему не execute() ? altjkeВопрос: Сервлет ждет пока выполниться процедура в вызванном JOBе . Можно ли не ждать пока выполниться executeUpdate и сразу перейти обратно на jsp? Можно не ждать. AJAX, JEE WorkManager, Asynchronous Processing (Servlet 3.0) и 100500 аналогичных способов запустить фоновый процесс. 1.Особой разницы не нашёл, если есть ключевой момент-буду рад услышать. 2.Существуют ограничения на используемые ср-ва.Можно ли сделать это в рамках представленных мной компонентов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:23 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke2.Существуют ограничения на используемые ср-ва.Можно ли сделать это в рамках представленных мной компонентов? Вышеперечисленые средства целиком и полностью в рамках представленных вами компонентов. Разве что вы портлет какой пишете или плагин для JIRA? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:25 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke1. Особой разницы не нашёл, если есть ключевой момент-буду рад услышать. execute() - просто и понятно. CallableStatement.executeUpdate() - при чтении кода вызывает WTF, с вопросами что именно хранимка апдейтит и почему результат этого апдейта в коде игнорируется. Соответсвтенно увеличивает WTF per minute - главный критерий качества кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:28 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
0FDaltjke, Сразу в процедуре асинхронно запускать джоб. Процедура(назовем SP1 ) запускаемая в сервлете и запускает джоб(назовем what - SP2 ). По идее блокировка сессии происходит на момент запуска SP1 , а по факту на SP2 , а насколько я знаю джобы создают свои сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:28 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke, Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:30 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Blazkowiczaltjke2.Существуют ограничения на используемые ср-ва.Можно ли сделать это в рамках представленных мной компонентов? Вышеперечисленые средства целиком и полностью в рамках представленных вами компонентов. Разве что вы портлет какой пишете или плагин для JIRA? Нет, просто никогда не сталкивался с этими вещами на практике. Если кинете пару примеров реализации AJAX под сервлеты, буду признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:31 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeНет, просто никогда не сталкивался с этими вещами на практике. Если кинете пару примеров реализации AJAX под сервлеты, буду признателен. Дык вот же они. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:32 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
BlazkowiczaltjkeНет, просто никогда не сталкивался с этими вещами на практике. Если кинете пару примеров реализации AJAX под сервлеты, буду признателен. Дык вот же они. Прошерстил ссылок 50, не нашёл нужного. Интересуют конкретные примеры для данной задачи.А именно: вызов execute без ожидания ответа.Сталкивались с этим раннее?Может завалялось пару источников хороших. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:00 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeПрошерстил ссылок 50, не нашёл нужного. Бывает. altjkeИнтересуют конкретные примеры для данной задачи.А именно: вызов execute без ожидания ответа.Сталкивались с этим раннее?Может завалялось пару источников хороших. Конкретно по этому вопросу уже ответил конкретным кодом: 16743789 Только это грабли. Но раз вам лень изучать более правильные технологии для реализации асинхронных процессов в JEE, то пользуйтесь этим простым кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:04 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
BlazkowiczaltjkeПрошерстил ссылок 50, не нашёл нужного. Бывает. altjkeИнтересуют конкретные примеры для данной задачи.А именно: вызов execute без ожидания ответа.Сталкивались с этим раннее?Может завалялось пару источников хороших. Конкретно по этому вопросу уже ответил конкретным кодом: 16743789 Только это грабли. Но раз вам лень изучать более правильные технологии для реализации асинхронных процессов в JEE, то пользуйтесь этим простым кодом. Не лень, просто время нехватает на разбор всех этих прелестей.Сам понимаю что так код не пишут, но что поделаешь. Позвольте несколько вопросов по new Thread().start(); 1) Предполагает создание нового потока ответ которого сервлет ждать не будет? 2) В него я помещаю мой execute? 3) Как в этом случае закрывать соединение с базой? Спрашиваю потому что не мею возможности просмотра большинства ссылок в интернете в т.ч. и доки. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:12 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke1) Предполагает создание нового потока ответ которого сервлет ждать не будет? Проблемы будут только пре деплоее\редеплоее\остановки контейнера. Поэтоу JEE спека запрещает использовать свои потоки и вместо этого предлагает использовать JEE WorkManager, Asynchronous Processing (Servlet 3.0) или JMS, которые вам "некогда" изучать. altjke2) В него я помещаю мой execute? Не только. altjke3) Как в этом случае закрывать соединение с базой? Получение соединения из пула, запуск процедуры и закрытие соединения нужно всё поместить в этот поток, так как JDBC API не является потокобезопасным. И каждому потоку желательно иметь (получать и отдавать) своё соединение, чтобы не влиять на другие потоки. altjkeСпрашиваю потому что не мею возможности просмотра большинства ссылок в интернете в т.ч. и доки. Большой китайский firewall мешает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:20 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПроблемы будут только пре деплоее\редеплоее\остановки контейнера. Поэтоу JEE спека запрещает использовать свои потоки и вместо этого предлагает использовать JEE WorkManager, Asynchronous Processing (Servlet 3.0) или JMS, которые вам "некогда" изучать. Когда возникнут ситуации деплоя/редеплоя/отключения томкат джобы запущенные таким образом все равно работают(сейчас), думаю и с потоками должно быть так же. Насчет файрвола - все может быть) Спасибо за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:31 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeКогда возникнут ситуации деплоя/редеплоя/отключения томкат джобы запущенные таким образом все равно работают(сейчас), думаю и с потоками должно быть так же. Если потоки по каким-то причинам зависнут на долго, то они будут держать ссылку на все классы war модуля задерживая его выгрузку из PermGen/Metaspace. Так же потоки могут задерживать штатную остановку контейнера. Есть и другие причины по которым JEE требует использовать только свои потоки. Но в такой простой задаче они не так актуальны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:38 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke0FDaltjke, Сразу в процедуре асинхронно запускать джоб. Процедура(назовем SP1 ) запускаемая в сервлете и запускает джоб(назовем what - SP2 ). По идее блокировка сессии происходит на момент запуска SP1 , а по факту на SP2 , а насколько я знаю джобы создают свои сессии. Если SP2 не надо использовать текущую сессию, то можно запустить с use_current_session=FALSE без блокировки сессии, но тогда нельзя запустить SP2 параллельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:50 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
0FD[но тогда нельзя запустить SP2 параллельно. Параллельно с чем? с SP1? да мне это и не нужно. у меня SP1 примерно такого вида: Код: plsql 1. 2. 3. А what в джобе с id=1234 лопатит миллион записей. Мне параллель SP1 и SP2 нафиг ненужна.Мне нужно чтобы SP1 запустило джоб(джоб в свою очередь создал свою сессию) и вернул ответ типа - я молодец,я запустил джоб!А рез-т джоба мне ждать не надо,там своя обработка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 17:19 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke, не получится запустить параллельно несколько SP2 так используй DBMS_SCHEDULER.RUN_JOB, зачем старый использовать dbms_job ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 17:34 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
0FDaltjke, не получится запустить параллельно несколько SP2 так используй DBMS_SCHEDULER.RUN_JOB, зачем старый использовать dbms_job На шедулер прав нету :( а так бы с радастью А SP2 не могут одновременно выполняться и так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 17:57 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeИнтересуют конкретные примеры для данной задачи.А именно: вызов execute без ожидания ответа.Сталкивались с этим раннее?Может завалялось пару источников хороших. http://assenkolov.blogspot.ru/2012/06/performance-of-long-running-requests.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 20:37 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeПосле этого идет переход обратно на jsp с сообщением о том что выполнено. Эта часть интересна? Ведь Вы понимаете, что если сервлет отвечает не дождаясь окончания операции с БД, то еще как-то надо узнать этот результат. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 22:30 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевaltjkeПосле этого идет переход обратно на jsp с сообщением о том что выполнено. Эта часть интересна? Ведь Вы понимаете, что если сервлет отвечает не дождаясь окончания операции с БД, то еще как-то надо узнать этот результат. :) Интересен ответ что JOB запустился,а рез-т работы joba обрабатывается на уровне оракла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 09:38 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeИнтересен ответ что JOB запустился,а рез-т работы joba обрабатывается на уровне оракла. +1 JOB сам по себе асинхронный. И не требует над собой асинхронного сервлета. Иначе это просто хранимка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 09:49 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Petro123altjkeИнтересен ответ что JOB запустился,а рез-т работы joba обрабатывается на уровне оракла. +1 JOB сам по себе асинхронный. И не требует над собой асинхронного сервлета. Иначе это просто хранимка. Но сервлет почему то ждет пока процедура в JOBe отработает :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 09:56 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke, - тебе же сказали: Результат важен, вот и ждёт. Так? - сколько ждёт клиент? Сколько клиентов? Ведь всё равно новый сервлет это новый поток\процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:01 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
imho я в своём проекте возвращаю результат в виде HTTP.error. (ошибка в БД) И, конечно жду от БД результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:04 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
на это прав нету? Код: java 1. 2. 3. http://my-oracle.it-blogs.com.ua/post-60.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:08 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Petro123altjke, - тебе же сказали: Результат важен, вот и ждёт. Так? - сколько ждёт клиент? Сколько клиентов? Ведь всё равно новый сервлет это новый поток\процесс. Так, ещё раз объясню. В сервлете запускается процедура 1, которая запускает JOB с процедурой 2. Мне нужен ответ от процедуры 1 (успешно она запустила JOB или нет). Ответ от процедуры 2 (о том как отработала процедура JOBа) мне не нужен в вебе. Клиент пока только я сам, жду столько, сколько при обычном вызове этого JOBa через pl/sql developer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:09 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeТак, ещё раз объясню. ну, значит я не понял. Форум программистов, а не писателей - приведи код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:13 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Petro123altjkeТак, ещё раз объясню. ну, значит я не понял. Форум программистов, а не писателей - приведи код. Сервлет: Код: java 1. 2. 3. 4. 5. 6. Оракловая процедура по запуску джоба (PROC1): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Сервлет ждет отработки процедуры(PROC2) в этом джобе. Код: plsql 1. 2. 3. ___ Для наглядности вместо параметров указал конкретные значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:19 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeстолько, сколько при обычном вызове этого JOBa через pl/sql developer. imho не пойму. Почему в IDE оракла нельзя запустить и отработать постановку задания _в фоне_ пакетом DBMS_JOB. А потом уже заниматься вебом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:48 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
поставь интервал 5 сек и занимайся своими делами. Если свернуть окно ослика влом. Удачи! imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 10:51 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Petro123поставь интервал 5 сек и занимайся своими делами. Рассматривал такой вариант, только менять не интервал а след. дату. Но застрял на моменте возвращения задания на первичный график. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:03 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke, OK просто, имхо это лучше чем потоки городить. Кстати, если вкладку осла закрыть = сессия закрывается = JOB а ля хранимка запускается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:09 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Petro123altjke, OK просто, имхо это лучше чем потоки городить. Кстати, если вкладку осла закрыть = сессия закрывается = JOB а ля хранимка запускается? Да :D JOBы в оракле неостановимы средствами оракла. Еси только сид вырубать. Но мне нельзя осла сворачивать или закрывать, мне нужно по нескольку джобов запускать в короткие сроки+пользоваться другим функ-ом веба в рамках одной хттп сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:26 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjkeНо мне нельзя осла сворачивать или закрывать, мне нужно по нескольку джобов запускать в короткие сроки придираюсь, но не логично)) - кликнул кнопку JSP - она запустила и сама себя убила. Чем не вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:36 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
altjke, а добавлять джоб можете? тогда можно так попробовать, время запуска sysdate, interval null-запустится только раз declare i number; begin dbms_job.submit(i,'PROC2;');commit; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:47 |
|
||
|
tomcat+Servlet+JSP+StoredProc
|
|||
|---|---|---|---|
|
#18+
Petro123altjkeНо мне нельзя осла сворачивать или закрывать, мне нужно по нескольку джобов запускать в короткие сроки придираюсь, но не логично)) - кликнул кнопку JSP - она запустила и сама себя убила. Чем не вариант? После вызова, идет ещё инсерт и параметры типа request.getSession().setAttribute() которые нужны в других сервлетах, а вынести их до execute не могу, так как нужен ответ о том что джоб запустился. В итоге решил не парится и создавать новый job с тем же what в sysdate + 5сек, без интервала - сервлет не виснет да и джоб подтирается сам потом.Теперь остается только придумать корректировку дат первоначальных jobов, при ситуации когда создался такой джоб до даты по расписанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:48 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2126410]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 532ms |

| 0 / 0 |
