春季-缓存目标JndiObjectFactoryBean时,它是否保持对JMS代理开放的连接?

时间:2018-11-21 10:12:40

标签: spring jms jndi solace

我们通过JNDI查找配置JMS目的地,如下所示:

@Bean
JndiObjectFactoryBean myTopic(@Value("${topic}") String topic,
                              JndiTemplate jndiTemplate) {

    JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
    jndiObjectFactoryBean.setJndiTemplate(jndiTemplate);
    jndiObjectFactoryBean.setJndiName(topic);

    return jndiObjectFactoryBean;
}

在初始化此bean时,Spring确认对象存在并将其缓存以备后用。此目标的缓存是否还涉及到与我们的代理之间创建的持久连接?还是仅在实例化我们的CachingConnectionFactory时才物理创建连接?

1 个答案:

答案 0 :(得分:2)

当您在createConnection()实例上第一次调用CachingConnectionFactory时,将创建(唯一和共享)连接,并在对destroy()resetConnection()的调用中被释放根据合同规定(CachingConnectionFactory继承自SingleConnectionFactory):

  

一个JMS ConnectionFactory适配器,它从所有createConnection()调用中返回相同的Connection,而忽略对Connection.close()的调用