当前位置: 首页 > 知识库问答 >
问题:

安全管理器下的Arquillian测试抛出NoSuchElementException

蒋飞捷
2023-03-14

我有一个WildFly 10.1环境,我在其中使用以下配置启动容器:

<container qualifier="container.active-1" mode="suite" default="true">
    <configuration>
        <property name="jbossHome">${wildFlyInstallDir}</property>
        <property name="jbossArguments">-secmgr</property>
        <property name="javaVmArguments">
            -Djava.net.preferIPv4Stack=true
            -Djgroups.bind_addr=127.0.0.1
            -Djboss.socket.binding.port-offset=137
            -Djava.security.policy=./arquillian.policy
        </property>
    </configuration>
</container>

当我没有指定-secmgr参数时,实例启动,测试执行得很好;但是,当我使用安全管理器使用安全管理参数触发时,我得到以下异常:

java.util.NoSuchElementException
    at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:713)
    at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
    at org.jboss.arquillian.container.test.spi.util.TestRunners.getTestRunner(TestRunners.java:60)
    at org.jboss.arquillian.container.test.spi.util.TestRunners.getTestRunner(TestRunners.java:44)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:169)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:135)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
    at io.undertow.servlet.handlers.ServletInitialHandler$1$1.run(ServletInitialHandler.java:110)
    at java.security.AccessController.doPrivileged(Native Method)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:107)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我需要使用安全管理器来执行我的Arquillian测试用例,我不清楚在我的配置中会遗漏什么。

相关的毕业生图书馆是:

org.jboss.arquillian.junit:arquillian-junit-container:1.1.12.Final
org.jboss.arquillian.protocol:arquillian-protocol-servlet:1.1.12.Final
org.wildfly.arquillian:wildfly-arquillian-container-managed:2.0.0.Final

共有1个答案

龚睿
2023-03-14

问题是因为包覆面提取部署不包括< code>permissions.xml文件,因此引发了异常。一旦我添加了那个文件,一切都正常了。

 类似资料:
  • 即使我在Mule EE上运行,Mule Security Manager依赖性也没有得到解决。代码如下: http://www.mulesoft.org/schema/mule/spring-security http://www.mulesoft.org/schema/mule/spring-security/current/mule-spring-security.xsd http://www

  • 我正在寻找沙盒Java 8的Nashorn javascript引擎。我已经发现了--no-java标志,这很有帮助,但我还发现了以下链接,其中指出需要“在启用SecurityManager的情况下运行”:http://mail.openjdk.java.net/pipermail/nashorn-dev/2013-September/002010.html 我还没有找到留档说明如何与Nashor

  • 1 概述 测试管理是xxx 测试管理的工作包括: 2 方法 3 工具 3.1 JIRA Zephyr 强烈推荐 3.2 TechExcel DevTest 推荐试用 4 平台 5 参考 从需求到研发,再到发布案例 给软件测试人员15个最好的测试管理工具

  • 我用Robolectric测试写了一个简单的hello-world。 我已经向build.gradle添加了正确的依赖项: 下面是我要测试的简单: 我运行的是Android Studio2.0预览版3B。 问题是:如何避免失败?

  • 有没有办法给管理servlet增加登录安全性? 似乎在V0.7中,您可以将以下两个添加到您的yaml文件中: 然而,我在最新版本(0.9.2)中尝试了,它给我一个错误,说:server.yaml有一个错误: 这是我拥有的:

  • 1. 前言 安全管理是软件系统必不可少的的功能。根据经典的 “墨菲定律”—— 凡是可能,总会发生。如果系统存在安全隐患,最终必然会出现问题。 本节就来演示下,如何使用 Spring Boot + Spring Security 开发前后端分离的权限管理功能。 2. Spring Security 用法简介 作为一个知名的安全管理框架, Spring Security 对安全管理功能的封装已经非常完