2015-10-08 2 views
6

Hier ist der Code zu beschränken einige Aufgaben zu tun, bevor Web-Anwendung gestartet wird (I glassfish4 bin mit):EJB Warnung: WELD-000411: ... Betrachten Ereignisse mit @WithAnnotations oder einem generischen Typ mit Grenzen

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) { 

    } 
} 

Aber während des Startvorgangs erhalte ich diese Warnungen:

WELD-000411: Observer-Methode [BackedAnnotatedMethod] Privat org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType (@Observes ProcessAnnotatedType) erhält Ereignisse für alle annotierten Typen. Sie können Ereignisse mit @WithAnnotations oder einem generischen Typ mit Begrenzungen einschränken.

WELD-000411: Observer-Methode [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType (@Observes ProcessAnnotatedType, BeanManager) empfängt Ereignisse für alle Typen kommentierten. Berücksichtigen Sie die Einschränkung von Ereignissen mithilfe von @WithAnnotations oder einem generischen Typ mit Begrenzungen.

Was ist hier falsch?

Antwort

2

Diese Warnungen werden durch implizites CDI-Scannen in GlassFish verursacht. Beheben Sie dies, indem Sie eine beans.xml Datei definieren, in der Sie bean-discovery-mode auf none festlegen. Zum Beispiel in einem Maven Projekt beans.xml unter src/main/resources/META-INF/, wo Ihre beans.xml Datei könnte wie folgt aussehen:

<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> 

Dies wird der Scanvorgang für die gesamte Anwendung deaktivieren, so stellen Sie sicher, richtig zu annotieren, wo nötig. Sie können auch die globalen Einstellungen von Glassfish ändern Scanning für alle Anwendungen mit dem asadmin Befehl zu deaktivieren: auf das ich https://java.net/jira/browse/GLASSFISH-20483 empfehle die Lektüre

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

Für mehr Informationen.

Verwandte Themen