【问题标题】:"ArquillianServletRunner not found" with Tomcat 7 Embedded“未找到 ArquillianServletRunner”与 Tomcat 7 Embedded
【发布时间】:2014-10-18 04:57:36
【问题描述】:

我正在尝试创建一个嵌入了 Arquillian 和 Tomcat 7 的测试套件,但是当我使用 web.xml 文件部署我的 WAR 文件时,我收到以下错误。

未找到 ArquillianServletRunner。无法确定 ContextRoot 来自 ProtocolMetadata,请联系 DeployableContainer 开发者。

我该如何解决这个问题?

【问题讨论】:

    标签: embedded-tomcat-7 jboss-arquillian


    【解决方案1】:

    所以我不知道造成这种情况的确切原因,但有一个简单的解决方法。

    发生的情况是没有映射到名称“ArquillianServletRunner”的 servlet。这似乎由网络片段处理:http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/org.jboss.arquillian.protocol/arquillian-protocol-servlet/1.0.0.Beta1/org/jboss/arquillian/protocol/servlet/v_3/web-fragment.xml

    我的解决方案是将上述文件中的 web-fragment 的内容复制到我包含在通过 ShrinkWrap 创建的 WebArchive 中的 web.xml 文件中。这样,servlet“ArquillianServletRunner”就被配置并可用了。

    【讨论】:

    • 我也有同样的问题,将servlet定义添加到web.xml中似乎没有解决问题。
    【解决方案2】:

    如果你已经在你的 web.xml 中包含了下面的片段,这很可能是关于 jar 依赖的。

    <servlet>
        <servlet-name>ArquillianServletRunner</servlet-name>
        <servlet-class>org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ArquillianServletRunner</servlet-name>
        <url-pattern>/ArquillianServletRunner</url-pattern>
    </servlet-mapping>
    

    首先,您可以检查 ArquillianServlet 是否正在运行发送 GET 请求,如下所示

    http://localhost:8080/APP_CONTEXT_ROOT/ArquillianServletRunner?outputMode=serializedObject&className=com.stackoverflow.test.SampleTest&methodName=testSomething
    

    此外,您还可以查看服务器日志,您可以看到 NoClassDefFoundError。修复您的依赖项,然后重试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多