Discussion:
IllegalMonitorStateException on UserTransaction commit in Remote SFSB.
Krzysztof Śmigrodzki
2018-03-06 20:43:55 UTC
Permalink
I need to split my application into application and web tiers (a
political requirement, to comply with company wide architecture
guidelines, not a technical one).

I use remote statefull session bean to implement large files transfers
between application tires. My statefull bean uses BEAN transaction
management. When I issue UserTransaction::commit() an
IllegalMonitorStateException is thrown.

If I invoke SFSB locally it works, but remote calls throw that Exception.

I've prepared a sample to illustrate that problem:
https://github.com/ksmigrod/remotestatefull
Unfortunately it is a monstrosity using Arquillian and two TomEE 7.0.4
containers.
Passing local test is method localUpload of
me.noip.ksmigrod.experiments.remotestatefull.CheckTest class.
Failing remote test is method uploadViaRest of the same class.

Is it a misconfiguraton on my part, a flawed flow control or a bug in TomEE?

Regards,
Krzysztof Śmigrodzki

java.lang.IllegalMonitorStateException
at
java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:151)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1261)
at
java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457)
at
org.apache.openejb.resource.jdbc.managed.local.LocalXAResource.end(LocalXAResource.java:94)
at
org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:588)
at
org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:567)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:414)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:262)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
at
org.apache.openejb.core.CoreUserTransaction.commit(CoreUserTransaction.java:91)
at
me.noip.ksmigrod.experiments.remotestatefull.control.FileAttachmentUploadBean.close(FileAttachmentUploadBean.java:135)
Romain Manni-Bucau
2018-03-06 21:33:02 UTC
Permalink
Hi

Looks like a transaction is executed accross N threads and therefore fails.
Is it the case?


Le 6 mars 2018 21:44, "Krzysztof Śmigrodzki" <***@gmail.com> a écrit :

I need to split my application into application and web tiers (a
political requirement, to comply with company wide architecture
guidelines, not a technical one).

I use remote statefull session bean to implement large files transfers
between application tires. My statefull bean uses BEAN transaction
management. When I issue UserTransaction::commit() an
IllegalMonitorStateException is thrown.

If I invoke SFSB locally it works, but remote calls throw that Exception.

I've prepared a sample to illustrate that problem:
https://github.com/ksmigrod/remotestatefull
Unfortunately it is a monstrosity using Arquillian and two TomEE 7.0.4
containers.
Passing local test is method localUpload of
me.noip.ksmigrod.experiments.remotestatefull.CheckTest class.
Failing remote test is method uploadViaRest of the same class.

Is it a misconfiguraton on my part, a flawed flow control or a bug in TomEE?

Regards,
Krzysztof Śmigrodzki

java.lang.IllegalMonitorStateException
at
java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(
ReentrantLock.java:151)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.release(
AbstractQueuedSynchronizer.java:1261)
at
java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457)
at
org.apache.openejb.resource.jdbc.managed.local.LocalXAResource.end(
LocalXAResource.java:94)
at
org.apache.geronimo.transaction.manager.TransactionImpl.endResources(
TransactionImpl.java:588)
at
org.apache.geronimo.transaction.manager.TransactionImpl.endResources(
TransactionImpl.java:567)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(
TransactionImpl.java:414)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(
TransactionImpl.java:262)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(
TransactionManagerImpl.java:252)
at
org.apache.openejb.core.CoreUserTransaction.commit(
CoreUserTransaction.java:91)
at
me.noip.ksmigrod.experiments.remotestatefull.control.
FileAttachmentUploadBean.close(FileAttachmentUploadBean.java:135)
Loading...