Кот Maven: запустить моджо не видит мой сервлет - PullRequest
2 голосов
/ 18 мая 2011

У меня есть простой WAR-проект, управляемый Maven. У меня есть код сервлета под src/main/java/* и весь статический контент (HTML, изображения и т. Д.) Под src/main/webapp. Я могу развернуть получившуюся WAR-файл на нашем промежуточном сервере JBoss, и он работает, но обходной путь к повторному развертыванию мучительно медленный. Я хотел бы иметь возможность локально тестировать изменения на встроенном Tomcat, но у меня проблемы.

Отображение сервлета настроено в src/main/resources/web.xml - я думаю, что это правильно; соответствующая часть выглядит как

<servlet>
  <servlet-name>myServ</servlet-name>
  <servlet-class>my.pkg.MyServ</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>myServ</servlet-name>
  <url-pattern>/ms</url-pattern>
</servlet-mapping>

Maven говорит мне, что он работает на localhost:8080/myprojectname, и действительно, когда я туда иду, я вижу статический контент. Тем не менее, я попробовал localhost:8080/myprojectname/ms так же, как и `` localhost: 8080 / ms` '- первый дает мне 404, а второй - 0-байтовый ответ.

Вкратце: где мой активный контент? Я ничего не вижу на консоли. Похоже, что Maven сделал target/tomcat/logs, но это пусто. target/tomcat/webapps тоже пусто, и когда я запускаю mvn tomcat:run -X, я получаю много отладочной информации, включая ссылки на все мои JAR-зависимости, свойство classesDir, которое указывает на target/classes (что правильно), но нет упоминать где-либо об указанном мной шаблоне URL-адреса, а также имя класса Servlet, который будет вызываться в качестве обработчика. Я чувствую, что должен сказать Maven или Tomcat, как найти web.xml, или, может быть, указать сопоставление URL-адреса другим способом ... если вы не можете сказать, я новичок в этом: D

ETA: Моя установка выглядит очень похоже на этого парня , хотя наши проблемы кажутся другими.

1 Ответ

2 голосов
/ 18 мая 2011

Проще, чем я думал: хотя POM настроен на использование src/main/resources/web.xml, это не «правильное» место для его размещения. Перемещение его на src/main/webapp/META-INF привело к появлению сервлета - что, конечно, привело к еще дюжине или около того ошибок в настройках проекта, но это история для другого дня.

...