Как заставить встроенный механизм сервлетов быстро создавать экземпляры сервлетов?

StackOverflow https://stackoverflow.com/questions/75379

  •  09-06-2019
  •  | 
  •  

Вопрос

Проблема проста, но я уже немного борюсь.

Server server = new Server(8080);  
Context context = new Context(server, "/", Context.NO_SESSIONS);
context.addServlet(MainPageView.class, "/");
context.addServlet(UserView.class, "/signup");
server.start();

Это довольно стандартный фрагмент кода, который вы можете найти где угодно в мире Jetty.У меня есть приложение, которое встраивает Jetty в качестве механизма сервлетов и имеет несколько сервлетов.

Создание экземпляров некоторых из этих сервлетов требует тяжелой работы при запуске.Скажем — чтение дополнительных конфигов, подключение к базе и т.д.Как я могу заставить механизм сервлетов оперативно создавать экземпляры всех сервлетов, чтобы я мог выполнять всю тяжелую работу заранее, а не по первому запросу пользователя?

Это было полезно?

Решение

Я не уверен, почему использование опции Джастина Guice make не работает для вас.Что именно вводят?Я не уверен, поможет ли это вам вообще, потому что это очень похоже на то, что Джастин написал выше, но если вы сделаете это таким образом, Jetty выполнит фактическое создание экземпляра.

Context context = new Context(server, "/", Context.NO_SESSIONS);
ServletHolder mainPageViewHolder = new ServletHolder(MainPageView.class);
// Do this to force Jetty to instantiate the servlet
mainPageViewHolder.getServlet();  
context.addServlet(mainPageViewHolder, "/");

Другие советы

Использовать Context.addServlet перегрузка, которая занимает ServletHolder. ServletHolder — это класс, который принимает экземпляр класса или сервлета.

Servlet myServlet = new MyServlet();
ServletHolder holder = new ServletHolder(myServlet);
context.addServlet(holder, "/");

Это предполагает пристань 6.Я думаю, что это подойдет и для Jetty 7.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top