Я пытаюсь запустить контекст CDI-SE внутри своего приложения Quartz, поэтому у меня есть следующая зависимость (maven):
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>2.3.4.Final</version>
</dependency>
Внутри моего JobQuartz у меня есть метод execute() со следующим:
public void execute(JobExecutionContext context) throws JobExecutionException {
Weld weld = new Weld();
WeldContainer container = weld.initialize();
service = container.instance().select(MyService.class).get();
service.go();
weld.shutdown();
}
Но я получил следующую ошибку:
Caused by: java.lang.IllegalStateException: WELD-ENV-002009: Weld SE container cannot be initialized - no bean archives found
Мой проект представляет собой WAR, поэтому я поместил файл beans.xml внутрь /src/main/webapp/META-INF/
, см. содержимое:
<?xml version="1.0"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.2" bean-discovery-mode="all">
</beans>
Я скопировал файл в /src/main/resource/META-INF
, но получил ту же ошибку.
WeldContainer
реализуетInstance
, поэтому вы должны быть в состоянии сделатьcontainer.select(MyService.class)
. МетодWeldContainer.instance()
устарел в более новых версиях. - person Siliarus   schedule 21.11.2017/src/main/webapp/WEB-INF/
, а не/src/main/webapp/META-INF/
- person Rouliboy   schedule 21.11.2017