package org.nutz.ioc.val;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.nutz.ioc.IocMaking;
import org.nutz.ioc.ValueProxy;
import org.nutz.lang.Lang;
/**
* 通过JNDI查找相应的对象
* @author wendal(wendal1985@gmail.com)
*
*/
public class JNDI_Value implements ValueProxy{
private String jndiName;
private Context cntxt;
public JNDI_Value(String jndiName) {
this.jndiName = jndiName;
}
public Object get(IocMaking ing) {
try {
if (cntxt == null)
cntxt = (Context)new InitialContext().lookup("java:comp/env");
return cntxt.lookup(jndiName);
}
catch (NamingException e) {
try {
return new InitialContext().lookup(jndiName);
}
catch (NamingException e2) {
try {
return ((Context)new InitialContext().lookup("java:/comp/env")).lookup(jndiName);
}
catch (NamingException e3) {
throw Lang.wrapThrow(e3);
}
}
}
}
}