[EJB/JBoss] - Clientside timeouts for EJB-Calls (2.1 + 3.0)
by bernd.koecke
Hello,
we have EJB 2.1 and 3.0 Beans on JBossAS 4.2.3 and EJB 2.1 on JBossAS 4.0.2. Now our clients would like to set timeouts for their RMI-EJB-Calls. I can set a timeout on the server side for all EJBs, but we have applications which are used by frontend and backend systems. The Backends can wait for the response, but the Frontends need a fast response or an exception.
Is there a possibility to set such timeouts on the client side?
I think setting the so-timeout on the client socket would be a solution. I found a solution for EJB 3, with a small additional interceptor and an optional properties file in the clients classpath. But this doesn't work for EJB 2.1 on JBossAS 4.2.3 and 4.0.2. It seems that I have to replace some classes at the interface between EJB-Container and JBossRemoting. Or do I miss a configuration alternative?
Thanks a lot,
Bernd
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4243971#4243971
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4243971
17 years
[JBoss Messaging] - Re:
by clebert.suconic@jboss.com
An easy way to replicate this on my Linux Desktop:
Send 100K messages using Naresh's testcase.
The MDBs will be receiving messages over XA.
I got the eventual exception:
javax.jms.JMSException: MessagingException[errorCode=3 message=Did not receive ping from server]
One thing I realized, was during the processing.. the MDB is consuming messages over XA, so I got lots of small transactions processing...
on the client:
"Thread-13 (group:JBM-client-global-threads-1127086624)" daemon prio=10 tid=0x00007f6d263e0000 nid=0x626f waiting on condition [0x000000004648e000..0x000000004648eb80]
| java.lang.Thread.State: TIMED_WAITING (parking)
| at sun.misc.Unsafe.park(Native Method)
| - parking to wait for <0x00007f6d59f3bc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
| at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
| at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2054)
| at org.jboss.messaging.core.remoting.impl.ChannelImpl.sendBlocking(ChannelImpl.java:308)
| - locked <0x00007f6d59f3bcf8> (a java.lang.Object)
| at org.jboss.messaging.core.client.impl.ClientSessionImpl.commit(ClientSessionImpl.java:810)
| at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelOnePhaseCommit(XAResourceRecord.java:811)
| at com.arjuna.ats.arjuna.coordinator.BasicAction.onePhaseCommit(BasicAction.java:2656)
| at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1784)
| - locked <0x00007f6d633e0a88> (a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction)
| at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:94)
| at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
| at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1423)
| at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)
| at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
| at org.jboss.messaging.ra.inflow.JBMMessageHandler$XATransactionDemarcationStrategy.end(JBMMessageHandler.java:544)
| at org.jboss.messaging.ra.inflow.JBMMessageHandler.onMessage(JBMMessageHandler.java:287)
| at org.jboss.messaging.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:671)
| at org.jboss.messaging.core.client.impl.ClientConsumerImpl.access$100(ClientConsumerImpl.java:41)
| at org.jboss.messaging.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:788)
| at org.jboss.messaging.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:105)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
| at java.lang.Thread.run(Thread.java:619)
|
|
and on the server:
| "Thread-9 (group:JBM-server-threads799626944-377384882)" prio=10 tid=0x00007f6d379f3000 nid=0x627c waiting on condition [0x000000004719b000..0x000000004719bc00]
| java.lang.Thread.State: WAITING (parking)
| at sun.misc.Unsafe.park(Native Method)
| - parking to wait for <0x00007f6d6340ae90> (a org.jboss.messaging.utils.VariableLatch$CountSync)
| at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
| at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
| at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:905)
| at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1217)
| at org.jboss.messaging.utils.VariableLatch.waitCompletion(VariableLatch.java:120)
| at org.jboss.messaging.core.journal.impl.TransactionCallback.waitCompletion(TransactionCallback.java:56)
| at org.jboss.messaging.core.journal.impl.JournalTransaction.waitCompletion(JournalTransaction.java:379)
| at org.jboss.messaging.core.journal.impl.JournalImpl.appendPrepareRecord(JournalImpl.java:1210)
| at org.jboss.messaging.core.persistence.impl.journal.JournalStorageManager.prepare(JournalStorageManager.java:411)
| at org.jboss.messaging.core.transaction.impl.TransactionImpl.prepare(TransactionImpl.java:166)
| - locked <0x00007f6d6340abd8> (a java.lang.Object)
| at org.jboss.messaging.core.transaction.impl.TransactionImpl.commit(TransactionImpl.java:208)
| - locked <0x00007f6d6340abd8> (a java.lang.Object)
| at org.jboss.messaging.core.server.impl.ServerSessionImpl.doHandleXACommit(ServerSessionImpl.java:1738)
| at org.jboss.messaging.core.server.impl.ServerSessionImpl.handleXACommit(ServerSessionImpl.java:545)
| at org.jboss.messaging.core.server.impl.ServerSessionPacketHandler.handlePacket(ServerSessionPacketHandler.java:168)
| at org.jboss.messaging.core.remoting.impl.ChannelImpl.handlePacket(ChannelImpl.java:621)
| at org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:364)
| - locked <0x00007f6d5a1c94c0> (a java.lang.Object)
| at org.jboss.messaging.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:483)
| at org.jboss.messaging.core.remoting.impl.invm.InVMConnection$1.run(InVMConnection.java:136)
| at org.jboss.messaging.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:105)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
| at java.lang.Thread.run(Thread.java:619)
|
Maybe this specific usecase is holding of pings and pongs because of the locks during the XA commit?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4243957#4243957
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4243957
17 years