Java从servlet调用EJB

时间:2012-07-15 11:22:56

标签: java reflection ejb

我有一个servlet,我想根据servlet获取的参数从它动态调用EJB对象。

调用EJB对象和方法的最佳方法是什么?

更新: 例如,我得到的参数是sessionBean的名称,所以我想调用它(通过它的名字),然后在其中调用一些方法,因此它将动态创建。

感谢提前。

2 个答案:

答案 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和查询调用时使用的确切语法。