package org.jboss.resteasy.test.cdi.injection.resource; import org.jboss.logging.Logger; import javax.annotation.PreDestroy; import javax.annotation.Resource; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Disposes; import javax.enterprise.inject.Produces; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.Queue; import javax.jms.Session; @ApplicationScoped @Resource(name = "queue/test") public class CDIInjectionResourceProducer { private static Connection connection; private static Session session; private static boolean disposed; @Resource(mappedName = "jms/queue/test") Queue bookQueue; @Resource(mappedName = "java:jboss/exported/jms/RemoteConnectionFactory") ConnectionFactory connectionFactory; protected static Logger log = Logger.getLogger(CDIInjectionResourceProducer.class); public static void dispose(@Disposes @CDIInjectionResourceBinding Queue queue) { log.info("ResourceProducer.dispose() called"); disposed = true; } public static boolean isDisposed() { return disposed; } @Produces @CDIInjectionResourceBinding public Queue toDestination() { log.info("Queue: " + bookQueue); return bookQueue; } @Produces @CDIInjectionResourceBinding public Session getSession() throws JMSException { if (connection == null) { connection = connectionFactory.createConnection("guest", "pass"); connection.start(); } if (session == null) { session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); } return session; } @PreDestroy public void preDestroy() throws JMSException { if (connection != null) { connection.close(); log.info("ResourceProducer.preDestory(): closed connection"); } } }