Посоветуйте нубу, как правильно писать Jetty-embedded приложение.?
Здравствуйте.
Имею небольшой опыт создания сервлета под TomCat, недавно решил пересесть на Jetty. Начал разбираться с Jetty 8.
Мне необходимо создать приложение, которое будет поддерживать сессии. По задумке, каждая функция описывается наследником AbstractHandler.
Я начал делать с применением Context и ContextHandlerCollection и Context, но уткнулся в то что каждый контекст создаёт собственную сессию со своим путём, в то время, как мне нужна одна сессия. Начал искать какой-нибудь селектор хендлеров, который вызывал бы соответствующий хэндлер по его пути, как это делается с контекстами, но не нашёл.
Почувствовал, что что-то идёт не так и решил посоветоваться с вами.
Спасибо. Документацию я исследовал, но ответа на вопрос «как замаппить функции стандартным способом» не нашёл.
Написал свой класс, который выбирает хэндлер по хвосту урла и запускает его.
Вот так мапятся сервлеты: context.addServlet(new ServletHolder(new HelloServlet(«Buongiorno Mondo»)),"/it/*");
Отдельные функции замапить стандартными средствами Jetty нельзя, для этого нужно что-то вроде JAX-RS или спринговых маппингов.
Как вариант, вы можете написать свой загрузчик, который будет через reflection пробегать по всем методам и регистрировать их через обертку в качестве сервлетов.
Ну, собственно, я поступил следующим образом: Создал контекст, ему обработчиком повесил собственный класс, который делает нужный мне маппинг. Этот контекст скормил менеджеру сессий.
Всё работает, как надо.