1 package com.hsbc.xfos.swapswire.jms;
5 import javax.jms.ConnectionFactory;
6 import javax.jms.Destination;
8 import org.apache.commons.logging.Log;
9 import org.apache.commons.logging.LogFactory;
10 import org.springframework.beans.factory.DisposableBean;
11 import org.springframework.beans.factory.InitializingBean;
12 import org.springframework.jndi.JndiTemplate;
14 /** Register/unregister a JMS connection factory in JNDI. */
15 public class JndiJmsBinder implements InitializingBean, DisposableBean {
16 private final static Log log = LogFactory.getLog(JndiJmsBinder.class);
18 private ConnectionFactory jmsConnectionFactory;
19 private JndiTemplate jndiTemplate;
20 private String connectionFactoryName;
21 private Map<String, Destination> destinations;
23 public void afterPropertiesSet() {
26 jndiTemplate.bind(connectionFactoryName, jmsConnectionFactory);
27 for (String key : destinations.keySet())
28 jndiTemplate.bind(key, destinations.get(key));
29 log.info("JMS object bound to JNDI");
30 } catch (Exception e) {
31 throw new RuntimeException("Cannot bind JMS objects", e);
35 public void destroy() {
37 for (String key : destinations.keySet())
38 jndiTemplate.unbind(key);
39 jndiTemplate.unbind(connectionFactoryName);
40 log.info("JMS object unbound to JNDI");
41 } catch (Exception e) {
42 throw new RuntimeException("Cannot unbind JMS objects", e);
46 public void setJmsConnectionFactory(ConnectionFactory jmsConnectionFactory) {
47 this.jmsConnectionFactory = jmsConnectionFactory;
50 public void setJndiTemplate(JndiTemplate jndiTemplate) {
51 this.jndiTemplate = jndiTemplate;
54 public void setConnectionFactoryName(String connectionFactoryName) {
55 this.connectionFactoryName = connectionFactoryName;
58 public void setDestinations(Map<String, Destination> destinations) {
59 this.destinations = destinations;