如何在部署自身时调用EJB方法?

时间:2009-11-17 09:11:03

标签: ejb

我想在不使用servlet的情况下在同一时刻调用EJB中的方法,而不使用servlet。

感谢。

大卫。

5 个答案:

答案 0 :(得分:2)

似乎没有为此目的由EJB规范定义的生命周期方法。各个供应商可以提供扩展以允许此操作。例如,Startup Beans in WebSphere将是放置所需调用逻辑的地方。

使用诸如静态方法之类的技术似乎有点危险,因为我们不知道在静态方法触发之前是否所有依赖注入都已完成,因此是否可以安全地使用EJB的业务方法。

Persoanlly,如果我需要便携式,我会咬紧牙关并使用servlet。它的成本非常低。

答案 1 :(得分:0)

尝试在静态块中进行初始化。当类加载器加载类时,这将运行一次。

static { System.out.println("static"); }

答案 2 :(得分:0)

PostConstruct钩子是正确的。

在此处查找有关PostConstruct的更多信息:

让我们以一个简单的例子结束:

@Stateless
public class TestEJB implements MyEJBInterface{

    @PostConstruct
    public void doThatAfterInitialization() {
        //put your code here to be executed after creation and initialization of your bean
    }

}

答案 3 :(得分:0)

静态初始化块在技术上在EJB中不是非法的,但在实例化类时,它们用于在任何构造函数之前执行代码(这可能是一个问题)。它们通常用于初始化静态字段,如果它们不是只读的,则在EJB中可能是非法的。那么,如何使用ejbCreate()setSessionContext()setEntityContext()方法呢(如果没有关于您要解决的问题的更多详细信息,甚至不确定这是否合适)?

答案 4 :(得分:0)

对于@Singleton bean,EJB容器应在部署应用程序时立即创建bean实例(如果注释为@Startup。

当然,这将启动静态初始化块,构造函数,依赖注入setter,@ PostConstruct方法等。

以下是对Java EE 6 Tutorial的恰当引用。