我有一個EJB項目,並具有以下注釋:演員豆<?>從BeanManager類的實例在Servlet的
@Retention(RUNTIME)
@Target(TYPE)
@Qualifier
public @interface AfterComplete {
}
我有2類,都裝飾有此註釋。他們還@Stateless
@AfterComplete
@Stateless
public class AfterCompletePrinter implements IAfterComplete {
public void afterComplete(String someValue) {
System.out.println("After complete printer: " + someValue);
}
}
@AfterComplete
@Stateless
public class AfterCompleteErrPrinter implements IAfterComplete{
public void afterComplete(String someValue) {
System.err.println(someValue);
}
}
在一個servlet,我有:
@WebServlet("/")
public class DemoServlet extends HttpServlet {
@Inject
BeanManager beanManager;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Set<Bean<?>> beans = beanManager
.getBeans(Object.class,new AnnotationLiteral<AfterComplete>() {});
for (Bean<?> bean : beans) {
response.getWriter().print(bean.getBeanClass());
// IAfterComplete iac = (IAfterComplete) bean;
}
}
}
我的servlet打印:
net.mikeski.ejb_annotations.AfterCompletePrinterclass net.mikeski.ejb_annotations .AfterCompleteErrPrinter
然而,這條線拋出,如果它不是評論異常:
IAfterComplete IAC =(IAfterComplete)豆;
唯一的例外是:
java.lang.ClassCastException:org.jboss.weld.bean.SessionBean不能轉換到net.mikeski.ejb_annotations.IAfterComplete
我該如何處理bean
以獲取實現IAfterComplete
的類的實例? bean.getName()
返回null。
我在想如果我能得到它的JNDI名稱,我可以做一個查詢,但不知道該怎麼做。
這是野驢10,如果它有任何區別。
我找不到「@AfterComplete」的任何信息。它是否記錄在某處?它是哪個API? – markspace
看看第一個代碼片段,它是註釋。 – mikeb