Java 找不到ManagedExecutorService

Java 找不到ManagedExecutorService,java,jakarta-ee,executorservice,jboss-arquillian,Java,Jakarta Ee,Executorservice,Jboss Arquillian,我对Arquillian和ManagedExecutorServices有问题。Arquillian无法找到默认的ManagedExecutorService。例外情况是: Caused by: javax.naming.NameNotFoundException: No object bound to name java:comp/DefaultManagedExecutorService 我正在使用IntelliJ,并使用Arquillian1.4.0.FinalGlassFish Emb

我对Arquillian和
ManagedExecutorService
s有问题。Arquillian无法找到默认的
ManagedExecutorService
。例外情况是:

Caused by: javax.naming.NameNotFoundException: No object bound to name java:comp/DefaultManagedExecutorService
我正在使用IntelliJ,并使用Arquillian
1.4.0.Final
GlassFish Embedded 3.1
执行测试

下面是我的单元测试:

@Slf4j
@RunWith(Arquillian.class)
public class WorkhorseTest {

    @Inject
    private Workhorse workhorse;

    @Deployment
    public static WebArchive createDeployment() {
        return ShrinkWrap.create(WebArchive.class)
                .addClass(Workhorse.class)
                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
    }

    @Test
    public void testExecution() throws Exception {
        final Future<Integer> result = workhorse.execute();
        result.get(1, TimeUnit.MINUTES);
        log.info("Executed...");
    }
}
@Slf4j
@RunWith(Arquillian.class)
公开课考试{
@注入
私人劳力;
@部署
公共静态WebArchive createDeployment(){
返回ShrinkWrap.create(WebArchive.class)
.addClass(Workhorse.class)
.addasWebInfoResource(EmptyAsset.INSTANCE,“beans.xml”);
}
@试验
public void testExecution()引发异常{
最终未来结果=workhorse.execute();
结果。获取(1,时间单位。分钟);
log.info(“已执行…”);
}
}
以下是EJB:

@Slf4j
@Singleton
public class Workhorse {

    @Resource
    private ManagedExecutorService mes;

    public Future<Integer> execute() {
        return mes.submit(() -> {
            log.info("Hello from a Runnable");
            return 5;
        });
    }


}
@Slf4j
@独生子女
公共级工作人员{
@资源
私人管理证券服务;
公共未来执行(){
返回mes.提交(()->{
log.info(“来自Runnable的Hello”);
返回5;
});
}
}

如何使用Arquillian测试
ManagedExecutorService
s?

我通过在
pom.xml中切换依赖项解决了这个问题:

旧的:


org.glassfish.main.extras
玻璃鱼嵌入网
5
假如
新的:


org.glassfish.main.extras
玻璃鱼嵌入所有
5
假如

可能是因为JBoss附带的默认managedexecutor的名称不同,因此您需要在
@Resource
注释中专门提供一个JNDI名称
<dependency>
    <groupId>org.glassfish.main.extras</groupId>
    <artifactId>glassfish-embedded-web</artifactId>
    <version>5.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish.main.extras</groupId>
    <artifactId>glassfish-embedded-all</artifactId>
    <version>5.0</version>
    <scope>provided</scope>
</dependency>