--- /dev/null
+package com.hsbc.xfos.swapswire.jms;\r
+\r
+import java.util.Map;\r
+\r
+import javax.jms.ConnectionFactory;\r
+import javax.jms.Destination;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.springframework.beans.factory.DisposableBean;\r
+import org.springframework.beans.factory.InitializingBean;\r
+import org.springframework.jndi.JndiTemplate;\r
+\r
+/** Register/unregister a JMS connection factory in JNDI. */\r
+public class JndiJmsBinder implements InitializingBean, DisposableBean {\r
+ private final static Log log = LogFactory.getLog(JndiJmsBinder.class);\r
+\r
+ private ConnectionFactory jmsConnectionFactory;\r
+ private JndiTemplate jndiTemplate;\r
+ private String connectionFactoryName;\r
+ private Map<String, Destination> destinations;\r
+\r
+ public void afterPropertiesSet() {\r
+ try {\r
+ Thread.sleep(5000);\r
+ jndiTemplate.bind(connectionFactoryName, jmsConnectionFactory);\r
+ for (String key : destinations.keySet())\r
+ jndiTemplate.bind(key, destinations.get(key));\r
+ log.info("JMS object bound to JNDI");\r
+ } catch (Exception e) {\r
+ throw new RuntimeException("Cannot bind JMS objects", e);\r
+ }\r
+ }\r
+\r
+ public void destroy() {\r
+ try {\r
+ for (String key : destinations.keySet())\r
+ jndiTemplate.unbind(key);\r
+ jndiTemplate.unbind(connectionFactoryName);\r
+ log.info("JMS object unbound to JNDI");\r
+ } catch (Exception e) {\r
+ throw new RuntimeException("Cannot unbind JMS objects", e);\r
+ }\r
+ }\r
+\r
+ public void setJmsConnectionFactory(ConnectionFactory jmsConnectionFactory) {\r
+ this.jmsConnectionFactory = jmsConnectionFactory;\r
+ }\r
+\r
+ public void setJndiTemplate(JndiTemplate jndiTemplate) {\r
+ this.jndiTemplate = jndiTemplate;\r
+ }\r
+\r
+ public void setConnectionFactoryName(String connectionFactoryName) {\r
+ this.connectionFactoryName = connectionFactoryName;\r
+ }\r
+\r
+ public void setDestinations(Map<String, Destination> destinations) {\r
+ this.destinations = destinations;\r
+ }\r
+\r
+}\r