I have completed the third step in the refactoring. This I have done the following things:
- Rewritten JMSConfiguration. Removed JmsTemplate and MesssageListener. Added their config settings instead. I did this because I want the config to be reuseable over several services
- Made JMSConduit asynchronous. Instead of doing a receive on the JmsTemplate I open one Spring DefaultMessageListenerContainer that waits for all replies. The sending threads then waits for the listener to receive the message. the communication happens over a synchronized map
- Rewrite of JMSDestination to use JmsTemplate and DefaultMessageLIstener
- First start of transactions. Support sessionTransacted and transactionManager
- Removed JMSListenerThread, SessionFactory and PooledSession
- Added documentation to most classes and methods
Some things are not finished:
- QoS settings do not work completely. I have implemented Qos that can be statically set using the config. Do we need different QoS settings per message?
- QoS on the server is not thread safe. JmsTemplate does not support setting QoS when sending the message. You have to set things like priority in the properties. I think this should be improved in JmsTemplate
- Several settings will probably not yet work
- I have added TODO tasks to the code where I think some more work has to be done
- Transactions will probably not yet work as we need to throw an exception when something happens. I guess when an exception occurs in the server code of the service we will not throw it up till the listener. Any ideas how to achieve this?
I will try to do my first commit with my new account for this one
Please feel free to give some feedback about the changes