Пристань: объявляйте сервлеты в Java вместо web.xml при использовании maven - PullRequest
1 голос
/ 26 августа 2011

Можно ли использовать встроенный код Java для добавления сервлетов:

Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
context.getInitParams().put("useFileMappedBuffer", "false");
context.addServlet(new ServletHolder(new MyServlet()), "/myurl");
....
server.start();
server.join();

вместо длинного пути web.xml:

<servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>package.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>MyServlet</servlet-name>
  <url-pattern>/myurl</url-pattern>
</servlet-mapping>

Я знаю, что это возможно в не-maven проекте, но, похоже, для плагина Maven Jetty требуется этот метод web.xml.

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

В сервлете 3.0 - да, независимо от мавена и пристани:

  • Используйте ServletContext.addServlet(..), где вы указываете имя сервлета и его имя класса / экземпляра / класса (3 перегруженных метода)

  • Затем вызовите addMapping(..) для возвращенного ServletRegistration, чтобы сопоставить его с шаблонами URL

2 голосов
/ 26 августа 2011

В Сервлет 3.0 , сервлеты могут быть объявлены и отображены с помощью аннотации @WebServlet.Конфигурация в web.xml не требуется и шаблонный Java-код.

@WebServlet("/myurl")
public class MyServlet extends HttpServlet { ... }

Однако текущий выпуск Jetty (7.x) поддерживает только Servlet 2.5.Jetty 8.x в настоящее время находится в разработке и поддерживает Servlet 3.0.Если вы не можете использовать Jetty 8.x или другой контейнер сервлетов, который поддерживает Servlet 3.0, вам может потребоваться продолжить использование дескриптора веб-развертывания для определения и отображения сервлетов.плагин в настоящее время поддерживает только Jetty 7 и поэтому может потребовать web.xml, как вы нашли.Вы можете проверить, есть ли снимок доступного подключаемого модуля maven-jetty-plugin, который использует экспериментальный Jetty 8.x.

...