如何使用DeltaSpike和Weld设置SparkJava CDI

如何使用DeltaSpike和Weld设置SparkJava CDI,java,cdi,weld,spark-java,deltaspike,Java,Cdi,Weld,Spark Java,Deltaspike,因此,我开始从头开始设置一个简单的SparkJava应用程序,其基本目标是将它与我已经构建的镜像SpringBoot(使用SpringData)应用程序进行比较。然而,我一直在努力使用DeltaSpike(它是SpringData的替代品)设置,因为它增加了一层CDI复杂性,我不必在SpringBoot中处理 长话短说,在尝试了一些(可能是错误的)方法之后:现在我被困在SparkJava Jetty容器中启用Weld(CDI)。我已经研究了如何启用,但这只会让我更加困惑——我甚至不确定它是否应该

因此,我开始从头开始设置一个简单的SparkJava应用程序,其基本目标是将它与我已经构建的镜像SpringBoot(使用SpringData)应用程序进行比较。然而,我一直在努力使用DeltaSpike(它是SpringData的替代品)设置,因为它增加了一层CDI复杂性,我不必在SpringBoot中处理

长话短说,在尝试了一些(可能是错误的)方法之后:现在我被困在SparkJava Jetty容器中启用Weld(CDI)。我已经研究了如何启用,但这只会让我更加困惑——我甚至不确定它是否应该工作

我现在得到的是:
线程“main”java.lang.NoClassDefFoundError中的异常:org/jboss/weld/events/WeldEvent

因为有很多文件,所以最好只共享我的github repo:。不要介意未使用的代码和类似的东西,因为它仍然是一个WIP

最后一个免责声明:除了这个错误本身,我觉得我可能完全遗漏了一些东西,或者我使用SparkJava/CDI/DeltaSpike的方法可能完全不可用,或者我的Maven依赖性没有任何意义,因此对此的任何指导也将不胜感激。干杯


9月2日更新:在服务器上重新设置。管理Spark嵌入式Jetty处理程序并将

以下是我添加侦听器的方式:

import org.jboss.weld.environment.servlet.BeanManagerResourceBindingListener;
import org.jboss.weld.environment.servlet.Listener;
...
JettyHandler handler = new JettyHandler(matcherFilter);
...
handler.addEventListener(new BeanManagerResourceBindingListener());
handler.addEventListener(new Listener());
这来自启动日志(使用
logback.xml中的跟踪级别)

5:46:50.427[Thread-0]调试o.e.j.u.component.ContainerLifeCycle-spark.embeddedserver.jetty.JettyHandler1530180168==dftMaxIdleSec=-1添加了{org.jboss.weld.environment.servlet。BeanManagerResourceBindingListener@49483272,非托管}
15:46:50.432[Thread-0]调试o.e.j.u.component.ContainerLifeCycle-spark.embeddedserver.jetty.JettyHandler1530180168==dftMaxIdleSec=-1添加了{org.jboss.weld.environment.servlet。Listener@62383f62,非托管}

之后没有“焊接”参考。如果我尝试使用任何
@Inject
edbean,它将无法按预期工作(因为日志没有给我任何与bean/类路径查找相关的信息):

我的
pom.xml
看起来像:

    <dependency>
      <groupId>com.sparkjava</groupId>
      <artifactId>spark-core</artifactId>
      <version>2.9.1</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.weld.se</groupId>
      <artifactId>weld-se-core</artifactId>
      <version>3.1.2.Final</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.weld.servlet</groupId>
      <artifactId>weld-servlet-core</artifactId>
      <version>3.1.2.Final</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.weld</groupId>
      <artifactId>weld-spi</artifactId>
      <version>3.1.SP1</version>
    </dependency>

请阅读,谢谢你的回复。我正在努力。
@Default
public class TestService {

  public String test() {
    return "123";
  }

}
    <dependency>
      <groupId>com.sparkjava</groupId>
      <artifactId>spark-core</artifactId>
      <version>2.9.1</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.weld.se</groupId>
      <artifactId>weld-se-core</artifactId>
      <version>3.1.2.Final</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.weld.servlet</groupId>
      <artifactId>weld-servlet-core</artifactId>
      <version>3.1.2.Final</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.weld</groupId>
      <artifactId>weld-spi</artifactId>
      <version>3.1.SP1</version>
    </dependency>
<?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="all">
</beans>