2008-09-16 4 views
0

Проблема проста, но я уже немного борюсь.Как заставить встроенный сервлет-сервлет запускать сервлеты?

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

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

ответ

2

Я не уверен, почему использование опции Guis make Justin не подходит для вас. Что именно вводится? Я не уверен, что это поможет вам вообще, потому что это очень похоже на то, что написал Джастин выше, но если вы сделаете это так, 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, "/"); 
+0

Вводят частные поля сервлета. Этот ответ лучше, но я все еще надеялся на какой-то неизвестный отсутствующий флаг, который я могу установить, и jety будет создавать все с нетерпением. Во всяком случае, я думаю, мне придется жить с этим. – Marcin 2008-09-17 05:32:40

0

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

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

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

+0

Джастин, это сделало бы трюк. Но по нескольким причинам (т. Е. Скрытая инъекция зависимостей на основе Guice) мне нужна Jetty, чтобы с нетерпением создавать сервлеты для меня. – Marcin 2008-09-16 18:28:14

Смежные вопросы