-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