"ArquillianServletRunner не найден" с Tomcat 7 Embedded
Я пытаюсь создать набор тестов со встроенными Arquillian и Tomcat 7, но при развертывании моего файла WAR с файлом web.xml я получаю следующую ошибку.
ArquillianServletRunner не найден. Не удалось определить ContextRoot из ProtocolMetadata, обратитесь к разработчику DeployableContainer.
Как это исправить?
2 ответа
Так что я не знаю точной причины этого, но есть простой обходной путь.
Происходит то, что не существует сервлета, сопоставленного с именем "ArquillianServletRunner". Похоже, что это обрабатывается веб-фрагментом: 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.xml, который я включал в веб-архив, создаваемый с помощью ShrinkWrap. Таким образом, сервлет "ArquillianServletRunner" был настроен и доступен.
Если вы уже включили приведенный ниже фрагмент в файл 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.stackru.test.SampleTest&methodName=testSomething
Кроме того, вы также можете заглянуть в журнал сервера и увидеть NoClassDefFoundError. Исправьте свои зависимости, затем попробуйте снова.