2014-03-14 5 views

ответ

5

С Weld, вы можете использовать пользовательские XML-пространство имен в beans.xml для исключения классов из сканирования:

<beans xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:weld="http://jboss.org/schema/weld/beans"> 
    <weld:scan> 
    <weld:exclude name="com.acme.swing.**"/> 
    </weld:scan> 
</beans> 

Смотрите Weld Manual для деталей.

+1

Вы ссылаетесь на версию 1.1.16 сварки. Могу ли я использовать ту же конфигурацию с сваркой 1.0.xx? –

1

У меня когда-то была эта проблема и не удалось найти стандартное решение в CDI 1.0.
Существует обходное решение: пометьте bean-компонент с @Alternative и не выбирайте эту альтернативу в beans.xml (то есть не перечисляйте его в элементе <alternatives>). Это должно сделать трюк.
Также в CDI 1.1 они заполнили этот пробел элементом scan/exclude.

1

Если @Vetoed (доступный с CDI 1.1) будет работать на вас, вы можете использовать @Typed() без значений или с Apache DeltaSpike @Exclude. Если вы не можете (/ не нравится) изменить класс, вы можете создать CDI-расширение и наблюдателя ProcessAnnotatedType -> call #veto, если, например, processAnnotatedType.getAnnotatedType(). getJavaClass() возвращает класс, который вы хотите исключить.

0

У меня была та же проблема, и, как сказал @Yuri, вы можете достичь этого, используя @Alternative annotation, если вы можете изменить класс, но если вы не можете (например, это сторонняя библиотека), то вы не может его контролировать.

Если вы проверите xsd cd 1.0 (http://java.sun.com/xml/ns/javaee/beans_1_0.xsd), вы не найдете тег, который мог бы вам помочь.

BTW есть WebLogic 12.1.1 и 12.1.2, но нет WebLogic 12.1.12. (https://en.wikipedia.org/wiki/Oracle_WebLogic_Server#Application_Server_versions)

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