EJBTransactionRolledbackException иногда возникает в @Asynchronous Function - PullRequest
3 голосов
/ 08 сентября 2011

Я использую Java 1.6.0_23 и Glassfish 3.1.1.У меня есть два синглтонских EJB.Один из них использует TimerService для запуска функции @Timeout.Во время @Timeout в другом синглтон-EJB вызывается функция @Asynchronous.Работает 95% времени без ошибок.Но в остальные 5% случаев, когда вызывается функция @Asynchronous, я получаю следующую ошибку без каких-либо доказательств того, что она даже запускала функцию @Asynchronous.Другие подробности об ошибках не регистрируются.

Есть идеи?

PS: я пытался увеличить максимальное количество EJB в Glassfish с 32 до 64. Без изменений.

java.util.concurrent.ExecutionException: javax.ejb.EJBTransactionRolledbackException
        at com.sun.ejb.containers.EjbAsyncTask.call(EjbAsyncTask.java:132) ~[ejb-container.jar:3.1.1]
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) ~[na:1.6.0_23]
        at java.util.concurrent.FutureTask.run(FutureTask.java:138) ~[na:1.6.0_23]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) ~[na:1.6.0_23]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) ~[na:1.6.0_23]
        at java.lang.Thread.run(Thread.java:662) ~[na:1.6.0_23]
Caused by: javax.ejb.EJBTransactionRolledbackException: null
        at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2305) ~[ejb-container.jar:3.1.1]
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2088) ~[ejb-container.jar:3.1.1]
        at com.sun.ejb.containers.EjbAsyncTask.call(EjbAsyncTask.java:114) ~[ejb-container.jar:3.1.1]
        ... 5 common frames omitted
Caused by: javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
        at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:4699) ~[ejb-container.jar:3.1.1]
        at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4577) ~[ejb-container.jar:3.1.1]
        at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1910) ~[ejb-container.jar:3.1.1]
        at com.sun.ejb.containers.EjbAsyncTask.call(EjbAsyncTask.java:99) ~[ejb-container.jar:3.1.1]
        ... 5 common frames omitted

Ответы [ 2 ]

1 голос
/ 09 апреля 2013

Случилось и со мной. Кажется, проблема не в коде, а в ресурсах сервера.

Я увеличил размер пула http-потоков Это было 5 макс для меня, и я изменил его на 10

Похоже, что проблема решена.

Также некоторые примечания по этой ошибке здесь: http://pcjuzeren.blogspot.co.il/2008/12/clients-transaction-aborted.html

1 голос
/ 08 сентября 2011

Вам придется искать другие ошибки, которые произошли до этой (возможно, проглоченные исключения, так как вы сказали, что других ошибок нет).EJBTransactionRolledbackException возникает, если текущий trx был отмечен для отката, и вы все еще делаете что-то в БД.

...