Регистрация servlet в jetty 9: StackOverFlow при отсутствии DefaultServlet

174
29 декабря 2018, 01:20

Я запускаю Jetty сервер и пытаюсь зарегистрировать сервлет. Вот в таком виде все работает:

import com.crest.test.http.XmlParserServlet;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
public class JettyServer {
    public static void start(int port) throws Exception {
        Server server = new Server(port);
        ServletContextHandler context = new ServletContextHandler(
                ServletContextHandler.SESSIONS);
        context.setContextPath("/");
        context.setResourceBase("src/main/resources/pages");
        server.setHandler(context);
        // Add dump servlet
        context.addServlet(XmlParserServlet.class, "/xml");
        // Add default servlet
        context.addServlet(DefaultServlet.class, "/");
        server.start();
        server.join();
    }
}

Но стоит мне удалить строчку с DefaultServlet - получаю Error 500: StackOverFlow. Вот сам сервлет:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class XmlParserServlet extends DefaultServlet{
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("xml.jsp").forward(request, response);
    }
}

Если что стакТрэйс тоже скину, просто он там километровый. Спасибо за помощь

Answer 1

DefaultServlet отвечает за загрузку статического контента, поэтому он мапится на /. То есть все запросы, на которые нету мапинга приходят на него, в том числе и запросы с *.jsp.

request.getRequestDispatcher("xml.jsp").forward(request, response);

Вы используете запрос JSP который должен обрабатываться этим сервлетом, иначе диспатчер выдаст ошибку, что файл не найден или что-то в этом роде, и затем выкинет ошибку 500.

READ ALSO
Fullscreen при смене одного Activity на другое Activity

Fullscreen при смене одного Activity на другое Activity

Пытаюсь сделать приложение на полный экран (для всех активити)Создал абстрактный FullscreenActivity и наследую от него остальные активити

177
После сборки проекта maven пропадает папка resources

После сборки проекта maven пропадает папка resources

До сборки проекта путь к ресурсам такой "src/main/resources/", после сборки этот путь уже не работает, тк в файле jar ресурсы находятся в самом начале

153
Реформат FTP ссылок

Реформат FTP ссылок

Возникла проблема переделать FTP-ссылки к файлу на более "юзер-френдли" вид

178
Метод в Java как метод str() / int() / bool () в Python

Метод в Java как метод str() / int() / bool () в Python

В общем я выучил Python, в нем можно просто написать

159