Java从servlet调用EJB

Java从servlet调用EJB,java,reflection,ejb,Java,Reflection,Ejb,我有一个servlet,我想根据servlet获得的参数动态调用它的EJB对象 调用EJB对象和方法的最佳方式是什么 更新: 例如,我得到的参数是sessionBean的名称,所以我想调用它(通过它的名称),然后调用其中的一些方法,所以它将被动态创建 提前感谢。您可以通过查找来完成此操作 这将检索MyEJB的远程接口,只需根据servlet参数创建查找字符串。如果您对这些方法没有任何线索,那么应该使用反射来找出答案。在不进行一系列@EJB注入的情况下获得此结果的最简单方法是使用查找。假设您已经发

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

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

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

提前感谢。

您可以通过查找来完成此操作


这将检索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和查找调用时使用的确切语法。

是否要调用其标识取决于提供给servlet的参数(意味着上下文查找)的EJB或者只是修改在一个总是相同的EJB上调用的方法?@fvu:
调用一个EJB,它的标识取决于给servlet的参数
——这就是我想要的,EJB不存在,所以我想按名称创建它,然后调用一些方法,谢谢。这只是JSP中需要的。Servlet只需要使用
@EJB
注释注入一个EJB。@bean的名称与servlets客户端请求一起出现。。。。非常有趣的要求。我真诚地希望servlet参数不包含确切的bean名称!不过,如果您有一种命令模式,在该模式下对输入的“命令”执行切换,则可以从中确定一个bean名称,并使用该名称进行查找。@Mike Braun:您能解释为什么从servlet参数获取bean名称是一个问题吗?thank’s.通过请求参数,用户可以输入每个名称,例如AdminBean。这允许用户执行非预期的代码,因此应始终避免。
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);
}