package org.glassfish.test.jms.injection.ejb;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import javax.jms.*;
import javax.ejb.*;
import javax.naming.*;
public class MyInterceptor {
static String context;
private Queue queue;
@Inject
@JMSConnectionFactory("jms/jms_unit_test_QCF")
@JMSSessionMode(JMSContext.AUTO_ACKNOWLEDGE)
private JMSContext jmsContext;
@AroundInvoke
public Object sendMsg(InvocationContext ctx) throws Exception {
Object[] params = ctx.getParameters();
try {
lookupQueue();
JMSProducer producer = jmsContext.createProducer();
TextMessage msg = jmsContext.createTextMessage((String) params[0]);
producer.send(queue, msg);
context = jmsContext.toString();
} catch (Exception e) {
throw new EJBException(e);
}
return ctx.proceed();
}
private Queue lookupQueue() throws Exception {
InitialContext ctx = new InitialContext();
queue = (Queue) ctx.lookup("jms/jms_unit_test_Queue");
if (queue == null)
throw new Exception("jms/jms_unit_test_Queue not found.");
return queue;
}
}