package org.jboss.seam.jms;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import javax.jms.JMSException;
import javax.jms.TopicConnectionFactory;
import javax.naming.NamingException;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.util.Naming;
/**
* Manager for a JMS TopicConnection. By default, the JBoss MQ UIL2.
*
* @author Gavin King
*
*/
@Scope(ScopeType.APPLICATION)
@BypassInterceptors
@Name("org.jboss.seam.jms.topicConnection")
@Install(precedence=BUILT_IN, genericDependencies=ManagedTopicPublisher.class)
public class TopicConnection
{
private String topicConnectionFactoryJndiName = "UIL2ConnectionFactory";
private javax.jms.TopicConnection topicConnection;
/**
* The JNDI name of the TopicConnectionFactory
*/
public String getTopicConnectionFactoryJndiName()
{
return topicConnectionFactoryJndiName;
}
public void setTopicConnectionFactoryJndiName(String jndiName)
{
this.topicConnectionFactoryJndiName = jndiName;
}
@Create
public void init() throws NamingException, JMSException
{
topicConnection = getTopicConnectionFactory().createTopicConnection();
topicConnection.start();
}
@Destroy
public void destroy() throws JMSException
{
topicConnection.stop();
topicConnection.close();
}
private TopicConnectionFactory getTopicConnectionFactory() throws NamingException
{
return (TopicConnectionFactory) Naming.getInitialContext().lookup(getTopicConnectionFactoryJndiName());
}
@Unwrap
public javax.jms.TopicConnection getTopicConnection()
{
return topicConnection;
}
public static javax.jms.TopicConnection instance()
{
return (javax.jms.TopicConnection) Component.getInstance(TopicConnection.class);
}
@Override
public String toString()
{
return "TopicConnection(" + getTopicConnectionFactoryJndiName() + ")";
}
}