2015-05-25 5 views
3

Я использую сварку в качестве контейнера CDI. Кроме того, я использую osgi (felix). Так что это javase + felix + weld + pax. У меня есть следующий beans.xmlCDI: bean-discovery-mode = аннотированный игнорируется

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd" 
     bean-discovery-mode="annotated"> 
</beans> 

И у меня есть два класса:

@ApplicationScoped 
public class A { 
    @Inject 
    private B b; 
    public void postCreate(@Observes ContainerInitialized event, BundleContext ctx) { 
    b.test(); 
    } 
} 

А класс B

public class B{ 
    public void test(){ 
    System.out.println("test is here"); 
    } 
} 

Как вы видите, класс B не имеет @scopes или @ независимых аннотаций. Однако, когда я запускаю объект приложения класса B, вставляется в объект A и вызывается метод test. Зачем? Насколько я понимаю, его нельзя вводить.

EDIT 1
Я пытался использовать версии 1.1:

<?xml version="1.0" encoding="UTF-8"?> 
<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="annotated" version="1.1"> 
</beans> 

, но это не помогло.

+0

Вы используете версию 1.x сварного шва, который реализует CDI 1,0? –

+0

@Sebastian S Я использую версию 2.2.10, которая реализует CDI 1.1. –

ответ

0

Я писал об этом, чтобы сварить список рассылки, и это то, что написал Юзеф Hartinger (один из главных разработчиков сварных)

Кажется, что Pax CDI реализует только явные архивы боба около того далеко. Я подал вопрос на https://ops4j1.jira.com/browse/PAXCDI-186 Вам необходимо пометить классы/пакеты, которые вы не хотите, обнаружили с @Vetoed или используйте фильтр исключает http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#exclude_filters

0

Вы должны указать версию 1.1 в beans.xml.

Теперь ваш архив развертывания бобов является явным архивом для сварки.
См деталь: enter link description here

+0

См. Изменение 1. –

+0

Извините, я заметил. Bean.xml в каталоге meta-inf? –

+0

Да. И CDI работает с ним, как когда я устанавливаю bean-discovery-mode = "annotated2", он выдает исключение. –

 Смежные вопросы

  • Нет связанных вопросов^_^