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 }