/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.backend.jms.impl; import java.util.Properties; import javax.jms.JMSException; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import org.hibernate.search.engine.service.named.spi.NamedResolver; import org.hibernate.search.engine.service.spi.ServiceReference; import org.hibernate.search.util.logging.impl.Log; import org.hibernate.search.util.logging.impl.LoggerFactory; /** * JMSBackendQueueProcessor using JNDI to lookup the JMS components. */ public class JndiJMSBackendQueueProcessor extends JmsBackendQueueProcessor { private static final Log log = LoggerFactory.make(); @Override protected QueueConnectionFactory initializeJMSQueueConnectionFactory(Properties properties) { final String jmsConnectionFactoryName = properties.getProperty( JMS_CONNECTION_FACTORY ); try ( ServiceReference<NamedResolver> requestReference = getServiceManager().requestReference( NamedResolver.class ) ) { Object located = requestReference.get().locate( jmsConnectionFactoryName ); return (QueueConnectionFactory) located; } catch (RuntimeException e) { throw log.jmsQueueFactoryLookupException( jmsConnectionFactoryName, getIndexName(), e ); } } @Override protected Queue initializeJMSQueue(QueueConnectionFactory factory, Properties properties) { try ( ServiceReference<NamedResolver> requestReference = getServiceManager().requestReference( NamedResolver.class ) ) { Object located = requestReference.get().locate( getJmsQueueName() ); return (Queue) located; } catch (RuntimeException e) { throw log.jmsQueueLookupException( getJmsQueueName(), getIndexName(), e ); } } @Override protected QueueConnection initializeJMSConnection(QueueConnectionFactory factory, Properties properties) { final String login = properties.getProperty( JMS_CONNECTION_LOGIN ); final String password = properties.getProperty( JMS_CONNECTION_PASSWORD ); try { if ( login == null && password == null ) { return factory.createQueueConnection(); } else { return factory.createQueueConnection( login, password ); } } catch (JMSException e) { throw log.unableToOpenJMSConnection( getIndexName(), getJmsQueueName(), e ); } } }