package com.solace.sample;

import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;

@Stateless(name = "ProducerSB")
@TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED)

public class ProducerSB implements Producer, ProducerLocal {
    @Resource(name = "myCF")
    ConnectionFactory myCF;

    @Resource(name = "myReplyQueue")
    Queue myReplyQueue;

    public ProducerSB() {
    }

    @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED)
    @Override
    public void sendMessage() throws JMSException {

	System.out.println("Sending reply message");
	Connection conn = null;
	Session session = null;
	MessageProducer prod = null;

	try {
	    conn = myCF.createConnection();
	    session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
	    prod = session.createProducer(myReplyQueue);

	    ObjectMessage msg = session.createObjectMessage();
	    msg.setObject("Hello world!");
	    prod.send(msg, DeliveryMode.PERSISTENT, 0, 0);
	} finally {
	    if (prod != null)
		prod.close();
	    if (session != null)
		session.close();
	    if (conn != null)
		conn.close();
	}
    }
}