我想在同一个 JVM 中使用 CDI/Weld 在嵌入式 Jetty 上并行执行单元测试。
对于每个测试方法,都会创建一个带有干净数据库的新码头实例。顺序执行工作,但是,并行我遇到了一个异常。
org.jboss.weld.exceptions.DefinitionException:
Exception List with 1 exceptions:|Exception 0
:|java.lang.RuntimeException: javax.naming.NameAlreadyBoundException:
com<|?at com.sun.jersey.server.impl.cdi.CDIExtension.initialize(CDIExtension.java:196)
完整的堆栈跟踪位于pastebin。
服务器和上下文在不同的码头服务器实例和端口上隔离。然而,Weld 并没有意识到这一点,尽管它检测到了一个 Jetty 容器并且似乎在某个地方使用了共享状态(也许这是 Jetty 特定的?)。
有没有人遇到过这个问题或有提示如何告诉 Weld 它不应该注册两次?