package com.tddinaction.ejb3.sessionbeans.calculator;
import java.rmi.RemoteException;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.ejb.EJBException;
import javax.ejb.PostActivate;
import javax.ejb.PrePassivate;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
@Stateless
public class CalculatorBean implements Calculator, SessionBean {
@Resource(mappedName = "QueueConnectionFactory")
private QueueConnectionFactory queueConnectionFactory;
@Resource(mappedName = "queue/testQueue", type = javax.jms.Queue.class)
private Queue salesQueue;
public int add(int a, int b) {
notifyJmsQueue(a, b);
return a + b;
}
private void notifyJmsQueue(int a, int b) {
try {
QueueConnection connection = queueConnectionFactory
.createQueueConnection();
QueueSession session = connection.createQueueSession(
true, 10);
QueueSender sender = session.createSender(salesQueue);
TextMessage msg = session.createTextMessage();
msg.setText("add(" + a + ", " + b + ")");
sender.send(msg);
} catch (Throwable e) {
}
}
public void setSessionContext(SessionContext ctx)
throws EJBException, RemoteException {
System.out.println("setSessionContext()");
}
@PreDestroy
public void ejbRemove() {
System.out.println("@PreDestroy / ejbRemove");
}
@PostActivate
public void ejbActivate() {
System.out.println("@PostActivate / ejbActivate");
}
@PrePassivate
public void ejbPassivate() {
System.out.println("@PrePassivate / ejbRemove");
}
@PostConstruct
public void ejbCreate() {
System.out.println("@PostConstruct: " + toString());
}
}