我们通过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时才物理创建连接?
答案 0 :(得分:2)
当您在createConnection()
实例上第一次调用CachingConnectionFactory
时,将创建(唯一和共享)连接,并在对destroy()
或resetConnection()
的调用中被释放根据合同规定(CachingConnectionFactory
继承自SingleConnectionFactory
):
一个JMS ConnectionFactory适配器,它从所有createConnection()调用中返回相同的Connection,而忽略对Connection.close()的调用