powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Потоки и сеансы с БД
13 сообщений из 13, страница 1 из 1
Потоки и сеансы с БД
    #34281892
Господа знающие, объясните пожалуйста. Имеем вот такой сервлет
public class test {
/// Переменные класса
OracleDataSource datasrc = null;


public void init() throws ServletException {
// Получение JNDI - ресурса
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
datasrc = (OracleDataSource) envCtx.lookup ("jdbc/kemreg");
}

public void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Получаем сессию
conn = datasrc.getConnection();
conn.setAutoCommit(false);
// Вставляем параметры в БД и выполняем кое-каие действия
.... insert into table ..... 1 (операция 1)
// На основе сделанные манипуляции вытаскиваем запрос
...
select * from table (операция 2)
// И выбранные селектом данные используем, ну к примеру для формировании HTML таблички ...
// Ну и закрываем сессию и возвращаем его в пул
conn.close()
}

Вопрос, как Вы уже заметили операции DML-ные но разные по типу insert-ы и select-ы. Поэтому завернуть их в один батч-пакет не получиться. Как можно достичь такого чтобы при многопотоковом доступе к сервлету, всегда выполнялась последовательность
--- Первый поток
{ В одной сессии с БД
(операция 1)
(операция 2)
}
--- Второй поток
{ В одной сессии с БД
(операция 1)
(операция 2)
}


А не так:
(операция 1) -- первого потока
(операция 1) -- втрого потока
(операция 2) -- пераовго потока
или
(операция 1) -- одна сессия
(операция 2) -- другая сессия

Использую редакцию сервлетов 2.3, ну расширение SingleThreadModel с депрекэйтино. Остается тольок завернуть операцию 1 и 2 блоком synchronized или вообще метод service c опцией synchronized.

Но все хорошо, тогда выскакивает момент, опеарция1 и операция 2 выполняется 2-10 секунд. Соотвествено при выполнения 10 запросов будем ждать от 2 до 100 секунд, так как synchronized
предпологает последовательную работу, как бы добиться параллельности ... Чтобы соблюдалась последовательность операции в рамках одной сессии (добиться атомарности в транзакции с БД)

Заранее спасибо...
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282150
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще не очень-то понятно зачем тебе select надо разделять для потоков? Я бы понял если у тебя было select потом на основе выборки insert. Но в твоем случае insert делает нужную операцию. А select просто показывает актуальные данные. Что в этом может быть плохого???

Другой вариант тебе надо настроить уровень изоляции транзакции. Так транзакция не увидит то что записано другой транзакцией. Ну а после коммита данные уже будет доступны всем.
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282232
Вместо insert .... к примеру выполнение какой либо процедуры...
Задача вот в чем

Данные вставлятся во временную табличку temporary table ее данные видимы тольок (в пределах сессии) Она нужна для того чтобы на базе не сделать выборку

select ....
from tempoary_table tt,
table1 tt1,
where tt.code = tt1.code
......
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282263
Вот еще
У меня в базе куча view многие из них параметризованы контекстами
поэтому нужно в начале проинициализировать контекст, а потом можно сделать select из view
т.е.
операция 1
begin
-- установка контекстов
end
операция 2
select * from view


Естественно если контексты пыли установлены дургим потоком, т.е. запрос параметризовался интерсеным для пользователя способом. Он хотел за месяц отчет получиь, а получил за год)))
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282364
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дизайне немного попахивает из-за неявных связей между операциями. Но это мелочи. А ответ у меня все тот же. Надо подкрутить уровень изоляции у транзакций.
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282412

Дизайне немного попахивает из-за неявных связей между операциями. Но это мелочи. А ответ у меня все тот же. Надо подкрутить уровень изоляции у транзакций.


Что-то не понял, плохо что выполняется процедура а потом селект. Нормальная практика, даже очень нормальная.

Надо подкрутить уровень изоляции у транзакций. Куда рыть, надеюсь это не в сторону EJB, у меня все простенько томкат и все (аппликешенов нету)
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282495
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет нормальной практики не соглашусь. Нормальная практика это держаьт все нужные данные в контексте потока. А не выкладывать в хранилище для того чтобы позже их вычитать. Хотя может я в чем-то не прав и чего-то ещё не знаю.

Хм, я вижу тут многих на гугле забанили.






Раз -> Два -> Три
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282571
А не выкладывать в хранилище для того чтобы позже их вычитать Почему Вы решили что я хочу что вставил то и читаю ... Манипуляции данными с бд я делаю в БД, он это хорошо делает, даже очень хорошо...
Множество отчетов не удается получить обойтись лишь параметризацией запроса, иногда оптимальней еще выполнить процедурные штуки которые в результате вываливают в темповую табличку данные, которые потом и будет отображаться ... Ладно это не тема разговора, мне главное что-то на тему "изолированость транзакции" без EJB
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34282714
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Транзакции это понятия в первую очередь БД, а уж потом EJB.
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34283754
Причем здесь:- Транзакции это понятия в первую очередь БД , транзакция это поледовательная цепочка операции, направленные для достижения какой либо цели, если одна из операции глюкнула то возвращаемся в первоночальную точку (транзакция типа не выполнилась), ну а если все операции в норме, то транзакция считаеться выполненой и остаеться тольок отчитаться о целесообразности проведенных операции (коммит или роллбэк)... Это не много не в тему, а то сейчас пойдет диалог на тему "Транзакционные издержки" ....

Ну неужели все так грустно, ну госопда, подскажите чего нить по теме!!! Ну вернулся я с армии, тольок денбелизовался, отслужил в ПВО, а сейчас системка разработанная мной до армии хандрить начала... Все раньше работала на Jserv, а тут чуваки без меня на новую спецификацию servlet подняли ...
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34284822
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый дуракПричем здесь:- Транзакции это понятия в первую очередь БД ,
При том что ты постоянно говоришь о EJB. Который к вопросу никакого отношения не имеет.

Глупый дурак
Ну неужели все так грустно, ну госопда, подскажите чего нить по теме!!! Ну вернулся я с армии, тольок денбелизовался, отслужил в ПВО, а сейчас системка разработанная мной до армии хандрить начала... Все раньше работала на Jserv, а тут чуваки без меня на новую спецификацию servlet подняли ...
Ну, звездец, ты что между строк читаешь? Я для кого ссылки выше давал?
Для тех кто только вернулся из армии повторяем:
connection.setTransactionIsolation() - это то что надо покурить в первую очередь. Если не поможет, то разобраться почему.
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34284944
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый дурак...
Ну неужели все так грустно, ну госопда, подскажите чего нить по теме!!!
Хуже некуда. Объясни по-человечески, в нормально оформленом тэгами коде, без "ну например" и прочей ерунды. Доложите по уставу , короче.
...
Рейтинг: 0 / 0
Потоки и сеансы с БД
    #34285561
Наехали!!!

Раз...Два..Три:- не заметил я

Ладно, вроде разобрался (со своей проблемой) ...


Спасибо за комментарии, поехал на зимнюю рыбалку короче ...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Потоки и сеансы с БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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