?? jndiinjector.java
字號(hào):
package com.titan.interceptors;
import java.lang.reflect.*;
import com.titan.annotations.JndiInjected;
import javax.ejb.*;
import javax.interceptor.*;
import javax.naming.*;
import javax.annotation.PostConstruct;
public class JndiInjector {
@PostConstruct
public void jndiInject(InvocationContext invocation) {
Object target = invocation.getBean();
Field[] fields = target.getClass().getDeclaredFields();
Method[] methods = target.getClass().getDeclaredMethods();
// find all @JndiInjected fields methods and set them
try {
InitialContext ctx = new InitialContext();
for (Method method : methods) {
JndiInjected inject = method.getAnnotation(JndiInjected.class);
if (inject != null) {
Object obj = ctx.lookup(inject.value());
method.setAccessible(true);
method.invoke(target, obj);
}
}
for (Field field : fields) {
JndiInjected inject = field.getAnnotation(JndiInjected.class);
if (inject != null) {
Object obj = ctx.lookup(inject.value());
field.setAccessible(true);
field.set(target, obj);
}
}
invocation.proceed();
} catch (Exception ex) {
throw new EJBException("Failed to execute @JndiInjected", ex);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -