Hi. I am an EJB/JBoss newbie trying to develop a server app with multiple clients. The client app (launched with WebStart) uses both jms and rmi to communicate with the server app. All of my ejbs are stateless. I only want to allow a client to be logged in, er, 'once at a time.' In other words, if a client is logged on one machine, that client should not be able to log in elsewhere. So when a client logs in, I set a boolean in the db and the client cannot log in elsewhere until that boolean changes.
My question is: what is the best way to detect client connection failure? For example, the client's power fails, or the client's internet connection dies? Is there a built-in way to listen for such disconnects in JBoss, or do I need to set up my own periodic ping from the server app to ensure client's are still 'alive?'
I think you should use a Stateful session bean to manage that, then implement a listener to the session timeout of the bean and/or in the preDestroyed method to remove the flag. So if user is disconnected unexpectedly, then longest time they have to wait is the session timeout.
“Everything should be as simple as it is, but not simpler.” Albert Einstein