【发布时间】:2013-06-20 09:59:37
【问题描述】:
我想在同一个 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 它不应该注册两次?
【问题讨论】:
-
为什么不把堆栈跟踪放在这里?
-
因为比较长,不知道可读性如何。
标签: java deployment jetty cdi weld