Jakarta ee 焊接CDI范围异常

Jakarta ee 焊接CDI范围异常,jakarta-ee,jboss-weld,Jakarta Ee,Jboss Weld,我正在使用tomcat在Weld CDI上设置一个应用程序,并尝试在应用程序启动中运行一个类来启动实体管理器。 我得到以下异常,表明我的类有多个作用域 WELD-000046 At most one scope may be specified on public@ApplicationScoped @Singleton class se.raindance.squid.core.init.InitSquid 这是我的InitSquid.Java @ApplicationScoped @Sin

我正在使用tomcat在Weld CDI上设置一个应用程序,并尝试在应用程序启动中运行一个类来启动实体管理器。 我得到以下异常,表明我的类有多个作用域

WELD-000046 At most one scope may be specified on public@ApplicationScoped @Singleton class se.raindance.squid.core.init.InitSquid
这是我的InitSquid.Java

@ApplicationScoped
@Singleton 
@Startup
public class InitSquid {

@Inject   
private Logger log;  


@Inject
EntityManager entityManager;

/**
 *
 * @param startupEvent is sent when JSF is ready and up and running( After first
 *      request to FacesServlet).
 */
@PostConstruct
public void init() {

System.out.println("stutrup!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! InitSquid");
// Init Rainlets
InitRainlets initRainlets = new InitRainlets(entityManager);
initRainlets.init();

initSquidSettings();

}

private void initSquidSettings() {
List<SquidSettings> settingsList = (List<SquidSettings>) entityManager
    .createQuery(
        "select squidsettings from SquidSettings squidsettings")
    .getResultList();

if (settingsList.size() == 0) {
    log.info("No SquidSettings entity exists in system, creating one");

    SquidSettings settings = new SquidSettings();
    settings.setSubledgerRestResourceURI("http://localhost:8080/subledger-webapp/resteasy/");
    entityManager.persist(settings);
}
}

}

如果您在这个问题上有任何提示,我将不胜感激

您将bean指定为singleton和applicationscoped。试着解决一个问题


这个问题应该给出使用哪一个的提示:

你是说@Singleton是Weld中的一个范围?起初我没有@singleton,但我读到如果我想使用@startup,我必须有一个带有@singleton注释的singleton类applicationscoped与'eager'一起使用