Я хочу создать приложение для микросервисов с OSGI-Karaf, использующим WELD Interceptor.
Это мой Bundle-Activator, по заявке A
public class ActivatorBundle implements BundleActivator {
private AuditInitialize auditInitialize = new AuditInitialize();
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Running Bundle Activator!!!!");
auditInitialize.weld = new Weld();
auditInitialize.weld.setClassLoader(this.getClass().getClassLoader());
auditInitialize.container = auditInitialize.weld.initialize();
}
@Override
public void stop(BundleContext context) throws Exception {
auditInitialize.weld.shutdown();
}
У меня есть другое приложение B, которое сварило внутри приложения A .. Приложение B предназначено для библиотеки, которая вызывает это приложение A ..
это мой beans.xml, который объявляется в приложении A
<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_2.xsd">
<interceptors>
<class>com.anabatic.audit.interceptor.InitializeAuditInterceptor</class>
</interceptors>
при развертывании приложения A запускается ошибка, подобная этой
java.lang.IllegalStateException: WELD-ENV-002009: Weld SE container cannot be initialized - no bean archives found
at org.jboss.weld.environment.se.Weld.createDeployment(Weld.java:695)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:570)
at xxxxx.xxx.xx.xxx.xx.xx.ActivatorBundle.start(ActivatorBundle.java:17)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2239)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2145)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1372)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.lang.Thread.run(Thread.java:745)
Вы, ребята, можете мне помочь? Спасибо.