Я смотрю на приложение, которое использует Jetty, и у него много разных связанных объектов:
service = new Server(Integer.valueOf(System.getenv("PORT")));
final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
MyAppServlet myAppServlet = new MyAppServlet();
ServletHolder myAppServletServletHolder = new ServletHolder(myAppServlet);
final String serviceName = 'abc';
servletContextHandler.addServlet(myAppServletServletHolder, ("/"+ serviceName));
service.setHandler(servletContextHandler);
Итак, похоже, что иерархия:
Server
ServletContextHandler
ServletHolder
Servlet
Значение сервера очевидно, и кажется, что сервлет - это скрипт, который реализует реальное приложение.
Но смысл ServletContextHandler менее ясен. Можете ли вы дать простое объяснение, которое не предполагает большого опыта в экосистеме Java, а только общего опыта программирования? Это с целью совместного использования переменных конфигурации между различными приложениями (сервлетами)? Что может быть полезным для этого?
Наконец, я понятия не имею, зачем нам нужен ServletHolder вместо того, чтобы просто отдавать сервлет ServletContextHandler.
Следующее немного связано, но я не думаю, что очень близко. Этот вопрос перекрывает только один класс: В чем разница между ServletHandler и ServletContextHandler в Jetty?