View Javadoc
1   package org.myorg.encconfig.ejb;
2   
3   import javax.annotation.PostConstruct;
4   import javax.annotation.Resource;
5   import javax.ejb.EJBException;
6   import javax.ejb.SessionContext;
7   import javax.ejb.Stateless;
8   import javax.jms.ConnectionFactory;
9   import javax.jms.Topic;
10  import javax.naming.InitialContext;
11  import javax.naming.NamingException;
12  import javax.persistence.EntityManager;
13  
14  import org.slf4j.Logger;
15  import org.slf4j.LoggerFactory;
16  
17  @Stateless
18  public class JNDIAuditorEJB extends AuditorBase 
19  	implements AuditorRemote {
20  	private static final Logger log = LoggerFactory.getLogger(JNDIAuditorEJB.class);
21  	
22  	private Boolean publishJMS;
23  	private EntityManager em;
24  	private ConnectionFactory cf;
25  	private Topic topic;
26  	private @Resource SessionContext ctx;
27  	
28  	@PostConstruct
29  	public void init() {
30  		InitialContext jndi = null;
31  		try {
32  			jndi=new InitialContext();
33  			publishJMS = (Boolean) ctx.lookup("val/publishJMS");
34  			em = (EntityManager) ctx.lookup("jpa/em");
35  			cf = (ConnectionFactory) jndi.lookup("java:comp/env/jms/cf");
36  			topic = (Topic) jndi.lookup("java:comp/env/jms/topic");
37  		} catch (NamingException ex) {
38  			log.error("error looking up resources", ex);
39  			throw new EJBException("error looking up resources:" + ex);
40  		} finally {
41  			close(jndi);
42  		}
43  		super.setLog(log);
44  		super.setConnectionFactory(cf);
45  		super.setEntityManager(em);
46  		super.setTopic(topic);
47  		super.setPublishJMS(isPublishJMS());
48  	}
49  
50  	@Override
51  	public boolean isPublishJMS() {
52  		return publishJMS!=null && publishJMS;
53  	}
54  	@Override
55  	public boolean havePersistenceContext() {
56  		return em!=null;
57  	}
58  	@Override
59  	public boolean haveTopic() {
60  		return topic!=null;
61  	}
62  	@Override
63  	public boolean haveConnectionFactory() {
64  		return cf!=null;
65  	}
66  	
67  	@Override
68  	public int audit(String message) {
69  		return super.audit(message);
70  	}
71  }