2015-10-08 6 views
6

Ecco il codice per fare alcuni compiti prima dell'applicazione web è lanciato (sto usando glassfish4):EJB avvertimento: WELD-000411: ... Considerate limitare gli eventi utilizzando @WithAnnotations o un tipo generico con limiti

import javax.annotation.PostConstruct; 
import javax.annotation.PreDestroy; 
import javax.ejb.Singleton; 
import javax.ejb.Startup; 
import javax.servlet.ServletContextEvent; 
/** 
* 
* @author Ernestas Gruodis 
*/ 
@Startup 
@Singleton 
public class ServerInit { 
    /** 
    * Do some code execution before web application starts up. 
    */ 
    @PostConstruct 
    public void init() { 
     System.out.println("Initialising"); 
    } 
    /** 
    * Do some code execution on web application exit. 
    * @param sce the servlet context event. 
    */ 
    @PreDestroy 
    public void destroy(ServletContextEvent sce) { 

    } 
} 

Ma durante l'avvio ottengo questi avvertimenti:

saldare 000411: metodo Osservatore [BackedAnnotatedMethod] privato org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType (@Observes ProcessAnnotatedType) riceve eventi per tutti i tipi annotati. Considera di limitare gli eventi utilizzando @WithAnnotations o un tipo generico con limiti.

WELD-000411: metodo Osservatore [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType (@Observes ProcessAnnotatedType, BeanManager) riceve gli eventi per tutti i tipi annotati. Prendi in considerazione la possibilità di limitare gli eventi utilizzando @WithAnnotations o un tipo generico con limiti.

Cosa c'è di sbagliato qui?

risposta

2

Questi avvisi sono causati dalla scansione CDI implicita in GlassFish. Risolvi questo definendo un file beans.xml, in cui si imposta bean-discovery-mode su none. Per esempio, in un progetto di Maven mettere beans.xml sotto src/main/resources/META-INF/, in cui il file beans.xml potrebbe assomigliare a questo:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
     http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
     bean-discovery-mode="none"> 
</beans> 

Ciò disattivare la scansione per l'intera applicazione in modo da assicurarsi di annotare correttamente dove necessario. È inoltre possibile modificare le impostazioni globali di GlassFish per disabilitare la scansione di tutte le applicazioni che utilizzano il comando asadmin:

asadmin set configs.config.server-config.cdi-service.enable-implicit-cdi=false 

Per maggiori informazioni vi consiglio di leggere https://java.net/jira/browse/GLASSFISH-20483.

Problemi correlati