2015-10-08 24 views
6

ile genel bir türü kullanılarak olayları kısıtlayan düşünün:EJB uyarısı: KAYNAK 000411: ... web uygulaması (ben glassfish4 kullanıyorum) başlatılmadan önce bazı görevleri yapmak kod @WithAnnotations ya da Buradan sınırları

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

    } 
} 

Ancak, başlatma sırasında I bu uyarıları almak:

KAYNAK 000.411: Gözlemci yöntemi [BackedAnnotatedMethod] özel org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType (@Observes ProcessAnnotatedType) alır tüm açıklamalı türler için etkinlikler. @WithAnnotations veya no'lu genel türlerini kısıtlamalarla kısıtlamayı düşünün.

KAYNAK 000.411: Gözlemci yöntemi [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType (@Observes ProcessAnnotatedType, BeanManager) her Açıklamalı türleri için kabul etmektedir. @WithAnnotations veya 'u sınırlayan genel bir türü kullanarak etkinlikleri kısıtlamayı düşünün.

Burada sorun nedir?

cevap

2

Bu uyarılar GlassFish'teki örtük CDI taramasından kaynaklanır. bean-discovery-mode değerini none olarak ayarladığınız bir beans.xml dosyasını tanımlayarak bu sorunu çözebilirsiniz. Örneğin, bir Maven projesi içinde beans.xml dosya aşağıdaki gibi görünebilir src/main/resources/META-INF/ altında beans.xml yerleştirin:

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

Bu, tüm uygulama için tarama kapanacaktır böylece gerektiğinde düzgün açıklama emin olun. Ayrıca asadmin komutunu kullanarak tüm uygulamalar için tarama devre dışı bırakmak için GlassFish genel ayarlarını değiştirebilir:

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

fazla bilgi için ben https://java.net/jira/browse/GLASSFISH-20483 okumanızı tavsiye bu konuda.