package org.jboss.seam.jms.openmq;
import java.util.Properties;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.Specializes;
import javax.jms.ConnectionFactory;
import org.jboss.seam.jms.annotations.JmsDefault;
import org.jboss.seam.jms.inject.JmsConnectionFactoryProducer;
import com.sun.messaging.jmq.jmsclient.runtime.BrokerInstance;
import com.sun.messaging.jmq.jmsclient.runtime.ClientRuntime;
@ApplicationScoped
@Specializes
public class OpenMQConnectionFactoryProducer extends JmsConnectionFactoryProducer {
private ConnectionFactory connectionFactory;
@PostConstruct
public void initOpenMQ() {
// Obtain the ClientRuntime singleton object
ClientRuntime clientRuntime = ClientRuntime.getRuntime();
// Create a broker instance
BrokerInstance brokerInstance = clientRuntime.createBrokerInstance();
// Create a broker event listener
//BrokerEventListener listener = new EmbeddedBrokerEventListener();
// Convert the broker arguments into Properties. Note that parseArgs is
// a utility method that does not change the broker instance.
Properties props = brokerInstance.parseArgs(new String[]{});
// Initialize the broker instance using the specified properties and
// broker event listener
brokerInstance.init(props, null);
// now start the embedded broker
brokerInstance.start();
this.connectionFactory = new com.sun.messaging.ConnectionFactory();
connectionFactory.setProperty(ConnectionConfiguration.imqAddressList, "mq://localhost/direct");
}
@Override
@Produces @JmsDefault("connectionFactory")
public ConnectionFactory produceConnectionFactory() {
return this.connectionFactory;
}
}