2015-06-16 4 views
2

У меня есть пакет WAR с CDI beans. Развертывание пакета происходит очень медленно, потому что каждый раз при развертывании пакет сканируется на CDI-компоненты. Есть ли возможность отключить этот процесс?Отключить сканирование CDI beans в WAR

+0

Какая реализация CDI вы используете? Какой сервер приложений? –

+0

Вы хотите только отключить CDI для одного архива или полностью? –

+0

Я использую Tomcat 8 с org.jboss.weld.servlet 2.2.12.Final –

ответ

4

Правильный путь, чтобы отключить обнаружение в beans.xml соответствующего архива:

<?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" 
    version="1.1" bean-discovery-mode="none"> 
</beans> 

Согласно CDI specification это удаляет архив из списка боб-архивов.

+0

Ну, я получаю java.lang.IllegalStateException: Singleton не установлен для STATIC_INSTANCE => [] –

+0

Вы уверены, что можете отключить CDI для своего архива? –

+0

Я хочу ускорить развертывание пакета, отключив проверку пакета с помощью среды CDI, а не отключать использование во время выполнения. –

2

У меня такое чувство, что вы ищете скорее инструмент. Как уже упоминалось, Weld использует сканирование классов для поиска аннотаций. Есть способы ускорить это. Хорошо работает Jandex, обработчик аннотации, который можно использовать во время компиляции для создания индекса (проще читать базу данных) ваших классов и аннотаций. Это значительно увеличивает время развертывания.

+0

Интересное предложение. Но похоже, что Weld 2.2 уже использует Jandex ([link] (https://issues.jboss.org/browse/WELD-1588)). –

+0

Да, сварка 2.2 использует Jandex. Однако для того, чтобы ваше приложение использовало Jandex, вам нужно включить плагин во время компиляции. –

+0

А, ладно. Я должен попробовать это когда-нибудь. –