未调用启动bean

问题描述 投票:6回答:4

我在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.");
    }
}

但是在部署应用程序后未调用代码。是什么原因造成的?

jakarta-ee ejb java-ee-6 ejb-3.1
4个回答
11
投票

尝试以下注释集:

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

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

您会在herethis book中找到更多详细信息(第2章)。


6
投票

Startup注释仅适用于Singleton Bean,不适用于无状态Bean。参见javadoc

此外,在这种情况下,不需要@LocalBean。这声明您需要附加的无接口视图,但这仅在Bean实现远程或本地业务接口时才需要。如果忽略它,则默认情况下会显示无接口视图。


0
投票

就我而言,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>

-1
投票

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

标记一个singleton bean以在应用程序启动过程中进行急切的初始化。

© www.soinside.com 2019 - 2024. All rights reserved.