我有一个servlet,我想根据servlet获取的参数从它动态调用EJB对象。
调用EJB对象和方法的最佳方法是什么?
更新: 例如,我得到的参数是sessionBean的名称,所以我想调用它(通过它的名字),然后在其中调用一些方法,因此它将动态创建。
感谢提前。
答案 0 :(得分:3)
您可以通过JNDI查找来完成此操作。
InitialContext ic = new InitialContext();
MyEJB ejb = (MyEJB) ic.lookup("java:comp/env/MyEJB");
这将检索MyEJB的远程接口,只需根据servlet参数创建查找字符串。如果您对方法没有任何线索,则应使用反射来查找。
答案 1 :(得分:0)
在没有一系列@EJB
次注入的情况下获得此结果的最简单方法是使用查找。让我们假设你已经发现需要一个EJB1实例,查找代码将如下所示:
private EJB1 ejb1 = null;
try {
InitialContext ic = new InitialContext();
ejb1 = (EJB1)
ic.lookup(ejb1.class.getName());
ejb1.method1();
} catch (Exception ex) {
logger.log(Level.SEVERE,"Couldn’t create converter bean.",ex);
}
检查我们服务器的示例,了解在创建InitialContext和查询调用时使用的确切语法。