Please see discussion thread in JBoss Transactions forum, here.

Essentially, the issue is this:
We had a project where we converted from a Swing Client-Server App from 
WebLogic 8.1 (EJB2) to JBoss 4.2 and were advised by JBoss Consultants onsite 
that Socket connectors perform better than RMI and will handle failover better 
in moving away from a Clustered environment to multiple servers behind a 
Virtual IP (using ClientConnectAddress in jboss-service.xml to spoof clients).  
So we need to stick with Sockets, if possible, but...

When we change our org.jboss.remoting.transport.Connector in our 
jboss-service.xml from transport=socket to transport=rmi, we actually get the 
behavior we'd hope to see under socket.  (though lose some desired behavior 
that socket provides)

Under RMI, when the transaction timesout, the client is immediately notified 
that the transaction was timedout/rolledback.  Under Socket, the thread that is 
wrapped in the transaction actually finishes before anything is sent back to 
the client -- even after the transaction timed out and rolled back!  So the 
user gets an IllegalStateException returned after waiting for the entire thread 
to complete.

Not the best design, but we have always counted on the transaction 
timeout/rollback error to notify the client immediately.  Imagine a user fires 
off a query to load a list of tasks and they accidentally enter in a date range 
much larger than they intended.  (granted, we could control some more at the 
client level, but ideally we would make this conversion to jboss w/o having to 
change too much of this long-standing code)  Under RMI, we can send a message 
back to the user after 5 or 10 minutes, so they can see that the transaction 
timed out and clean up the query or otherwise try something else.

Under Socket, the behavior is far less desirable.  Say the query runs for 12 
minutes with a transaction timeout of 5 minutes.  The transaction dies after 5 
minutes but the end user on the client side doesn't receive a notification and 
instead is left to watch the status bar bounce for another 7 minutes...  and at 
that time they don't even receive their result set, they get an 
IllegalStateException!  (we could adjust our timeout, but that's not what the 
users are used to and we'd ultimately like to keep some consistency after the 
migration from weblogic to jboss)

What can be done to get Socket transport behaving like RMI transport?  (i.e. 
sending a transaction timeout/rollback exception back to the client)

Thanks much, in advance, for any and all assistance!

-John

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4133370#4133370

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4133370
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to