package project.core.mbeans.processing; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.ejb.Stateful; import javax.ejb.Stateless; import javax.naming.InitialContext; import org.jboss.annotation.ejb.RemoteBinding; import org.jboss.annotation.ejb.cache.simple.CacheConfig; import project.persistence.properties.MessageWithProperties; @RemoteBinding(jndiBinding="MessageDispatcher") @Stateful @CacheConfig(removalTimeoutSeconds=18000L) public class MessageDispatcher implements MessageDispatcherMBean { private MessageLinkProcessorMBean linkProcessor = null; @PostConstruct public void start() { //System.out.println ("Dispatcher started"); try { InitialContext context = new InitialContext (); linkProcessor = (MessageLinkProcessorMBean) context.lookup("MessageLinkProcessor"); } catch (Exception e) { e.printStackTrace(); // TODO move to log } } @PreDestroy public void stop() { //System.out.println ("Dispatcher stopped"); } public void dispatchMessage(MessageWithProperties message) { if (message.hasProperty("type")) { if (message.getProperty("type").equals("bad-message")) { // print this System.out.println ("Invalid message :"); System.out.println ("\t> url : " + message.getUrl()); System.out.println ("\t> user : " + message.getUser()); if (message.getMessageThread() != null) System.out.println ("\t> thread : " + message.getMessageThread().getName()); } } else { // dispatch towards the persistent layer // linkProcessor.addProcessedMessage(message); } } }