In the message published on the topic, you could include a message id (perhaps a UUID). The clients could send responses back on a different queue that the server listens to. If each of those responses also contained that message id, your sever would be able to match up the responses to the initial request.
Given that you are using JMS, the whole process is necessarily asynchronous anyway.
You could have an EJB Singleton that stores all the responses in a map, keyed by message id. After a certain amount of time (perhaps use an EJB timer that is scheduled to fire after however long you are willing to wait for a response) check to see what responses have returned and display that list of responding clients to the user.