1 22 package org.jboss.injection; 23 24 import org.jboss.logging.Logger; 25 import org.jboss.naming.Util; 26 27 import javax.naming.NameNotFoundException ; 28 import javax.naming.LinkRef ; 29 import javax.naming.NamingException ; 30 31 37 public class EjbEncInjector implements EncInjector 38 { 39 private static final Logger log = Logger.getLogger(EjbEncInjector.class); 40 41 private String ejbLink; 42 private Class refClass; 43 private String jndiName; 44 private String error; 45 private String encName; 46 47 public EjbEncInjector(String name, String mappedName, String error) 48 { 49 this.jndiName = mappedName; 50 this.error = error; 51 this.encName = name; 52 } 53 54 public EjbEncInjector(String name, Class refClass, String ejbLink, String error) 55 { 56 this.refClass = refClass; 57 String refClassName = refClass == null ? "NULL" : refClass.getName(); 58 this.ejbLink = ejbLink; 59 this.error = error; 60 this.encName = name; 61 if (refClass == null && ejbLink == null) throw new RuntimeException ("cannot have null refClass and ejbLink for encName: " + name); 62 } 63 64 65 public void inject(InjectionContainer container) 66 { 67 if (jndiName == null || jndiName.equals("")) 68 { 69 if (ejbLink != null && !"".equals(ejbLink)) 70 { 71 jndiName = container.getEjbJndiName(ejbLink, refClass); 72 } 73 else 74 { 75 try 76 { 77 if (refClass != null) 78 { 79 jndiName = container.getEjbJndiName(refClass); 80 } 81 else 82 { 83 throw new RuntimeException ("searching for @EJB" + encName + " has null refClass and null ejbLink."); 84 } 85 } 86 catch (NameNotFoundException e) 87 { 88 throw new RuntimeException ("could not resolve global JNDI name for " + error + " for container " + container.getIdentifier() + ": reference class: " + refClass.getName() + " ejbLink: " + ejbLink + " " + e.getMessage()); 89 } 90 } 91 } 92 try 93 { 94 if (jndiName == null) throw new RuntimeException ("Failed to populate ENC: " + encName + " global jndi name was null"); 95 log.debug(" " + encName + " --> " + jndiName); 96 Util.rebind(container.getEnc(), encName, new LinkRef (jndiName)); 97 } 98 catch (NamingException e) 99 { 100 throw new RuntimeException ("could not bind enc name '" + encName + "' for " + error + " for container " + container.getIdentifier() + ": reference class: " + refClass.getName() + " ejbLink: " + ejbLink + " " + e.getMessage()); 101 } 102 } 103 } 104 | Popular Tags |