-
1. Re: CDI - Injecting Classes at runtime
lightguard Mar 9, 2012 2:09 PM (in response to hamsterdancer)1 of 1 people found this helpfulYou're looking for code like what's in https://github.com/apache/incubator-deltaspike/blob/master/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanProvider.java
-
2. Re: CDI - Injecting Classes at runtime
jf321023 Mar 12, 2012 11:38 AM (in response to hamsterdancer)// Get BeanManager By JNDI
public static BeanManager getBeanManager() {
try {
return (BeanManager) new InitialContext()
.lookup("java:comp/BeanManager");
} catch (NamingException e) {
log.error("Can not get BeanManager!");
e.printStackTrace();
}
return null;
}
// Get the cls's instance
public static <T> T getBeanReference(Class<T> cls) {
Bean<?> myBean = getBeanManager().getBeans(cls).iterator().next();
return (T) getBeanManager().getReference(myBean, cls,
getBeanManager().createCreationalContext(myBean));
}
// Get the instance which with Annotation a
public static <T> T getBeanReference(Class<T> cls, final Class a) {
@SuppressWarnings("serial")
Bean<?> myBean = getBeanManager()
.getBeans(cls, new AnnotationLiteral() {
@Override
public Class annotationType() {
return a;
}
}).iterator().next();
return (T) getBeanManager().getReference(myBean, cls,
getBeanManager().createCreationalContext(myBean));
}
I hope above three method will help you