没有调用启动bean

时间:2011-07-25 18:48:33

标签: java-ee ejb java-ee-6 ejb-3.1

我在NetBeans中创建了一个Java Web应用程序项目,并在其中创建了一个启动bean:

package malibu.util;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;

@Stateless
@LocalBean
@javax.ejb.Startup
public class Startup {
    @EJB
    private ProviderEJB providerEJB;

    @PostConstruct
    public void onStartup() {
        System.err.println("Initialization success.");
    }
}

但是在部署应用程序后没有调用代码。是什么导致这种情况?

4 个答案:

答案 0 :(得分:11)

尝试以下一组注释:

@Singleton
@Startup
public class Startup {
    @EJB
    private ProviderEJB providerEJB;

    @PostConstruct
    public void onStartup() {
        System.err.println("Initialization success.");
    }
}

您会在here(第2章)中找到更多详情this book

答案 1 :(得分:6)

Startup注释适用于Singleton bean,而不是无状态bean。请参阅javadoc

此外,在这种情况下不需要@LocalBean。这声明您需要一个额外的无界面视图,但只有在bean实现远程或本地业务接口时才需要这样做。如果省略它,默认情况下会得到无界面视图。

答案 2 :(得分:1)

在我的情况下,JBoss 7EAP在战争中需要ejb-jar.xml配置文件来加载@Startup EJB。

<jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
           xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
           version="3.1">
 <enterprise-beans>...</enterprise-beans></jboss:ejb-jar>

答案 3 :(得分:-1)

http://docs.oracle.com/javaee/6/api/javax/ejb/Startup.html

在应用程序启动序列期间标记 singleton bean以进行急切初始化。