我有一个 servlet,我想根据 servlet 获取的参数从它动态调用 EJB 对象。
调用 EJB 对象和方法的最佳方式是什么?
更新:例如,我得到的参数是 sessionBean 的名称,所以我想调用它(通过它的名称),然后在其中调用一些方法,因此它将被动态创建。
提前致谢。
我有一个 servlet,我想根据 servlet 获取的参数从它动态调用 EJB 对象。
调用 EJB 对象和方法的最佳方式是什么?
更新:例如,我得到的参数是 sessionBean 的名称,所以我想调用它(通过它的名称),然后在其中调用一些方法,因此它将被动态创建。
提前致谢。
您可以通过JNDI查找来执行此操作。
InitialContext ic = new InitialContext();
MyEJB ejb = (MyEJB) ic.lookup("java:comp/env/MyEJB");
这将检索 MyEJB 的远程接口,只需根据 servlet 参数创建查找字符串。如果你对方法一无所知,你应该使用反射来找出答案。
在不进行一系列@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 和查找调用时使用的确切语法。