ВообщеМожет ли транзакция иметь много потоков?
У нас есть бизнес-логика, которая вызывает горлышко бутылки в одной транзакции. Бизнес-логика запрашивает базу данных для набора данных (только для чтения), обрабатывает ее и возвращает объект. Это нужно делать много раз с различными параметрами в данном запросе. Можем ли мы теоретически отловить каждый вызов бизнес-логики в отдельный поток?
В частности
EJB object (part of an http request on a JBoss App Server)
-creates objects that implement Callable (call method calls business logic method)
-using an ExecutorService invoke each callable object
Business Logic
-Makes a query of postgresql database which uses a PreparedStatement
-Using POJOs we build objects from ResultSet objects that come from postgresql
-Do expensive calculations
После всего этого мы получаем Postgres ошибки, которые неназванные порталы не существуют даже тогда, когда мы ограничиваем наши темы, к одному:
ERROR: cursor "<unnamed portal 777>" does not exist
STATEMENT: FETCH ALL IN "<unnamed portal 777>"
Я не совершенно уверен, что происходит, чтобы вызвать ошибку, но бизнес-логику вызывается правильно, и она отлично работает без потоковой передачи. Это заставляет меня задаться вопросом, можно ли начать или добавить потоки в транзакцию (и могут ли они это сделать?).
Можете ли вы разбить транзакцию на суб-транзакции? –
Как создаются соединения? Соединение должно использоваться только в одном потоке. –
@Liz Я новичок в транзакциях в целом, так что, может быть, вы можете добавить ответ с некоторой информацией о том, как в него будут вписываться суб-транзакции (нить для каждого? Как это скажется и происходит раньше?) @ Kathy I «Не знаю, что вы подразумеваете под соединением, но ejb является частью запроса на заполнение веб-страницы, а вызов postgres использует PreparedStatement. – Adam