2015-10-08 9 views
6

Oto kod, aby wykonać pewne zadania, zanim aplikacja internetowa jest uruchomiona (używam glassfish4):ostrzeżenie EJB: WELD-000411: ... rozważyć ograniczenie zdarzeń za pomocą @WithAnnotations lub ogólny typ z granicami

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

    } 
} 

Ale podczas uruchamiania mam tych ostrzeżeń:

Weld-000411: metoda Observer [BackedAnnotatedMethod] prywatny org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType (@Observes ProcessAnnotatedType) odbiera zdarzenia dla wszystkich typów z adnotacjami. Zastanów się ograniczając zdarzenia za pomocą @WithAnnotations lub ogólny typ z granicami.

wspawania 000411: Metoda Obserwator [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType (@Observes ProcessAnnotatedType, BeanManager) odbiera zdarzenia dla wszystkich w opis typów. Rozważ ograniczenie zdarzeń za pomocą @WithAnnotations lub typ ogólny z ograniczeniami.

Co jest nie tak?

Odpowiedz

2

Te ostrzeżenia są spowodowane niejawnym skanowaniem CDI w GlassFish. Rozwiąż to, definiując plik beans.xml, w którym ustawisz bean-discovery-mode na none. Na przykład w projekcie Maven umieścić beans.xml pod src/main/resources/META-INF/, gdzie plik beans.xml może wyglądać następująco:

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

To wyłączy skanowania dla całej aplikacji, więc upewnij się, aby prawidłowo opisywać gdzie potrzebne. Można również zmienić ustawienia globalne GlassFish wyłączyć skanowanie dla wszystkich aplikacji korzystających z komendy asadmin:

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

Aby uzyskać więcej informacji na ten temat polecam czytanie https://java.net/jira/browse/GLASSFISH-20483.

Powiązane problemy