Как заставить встроенный движок сервлетов активно создавать экземпляры сервлетов? - PullRequest
1 голос
/ 16 сентября 2008

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

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 в качестве движка сервлета и имеет несколько сервлетов.

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

Ответы [ 2 ]

2 голосов
/ 16 сентября 2008

Я не уверен, почему использование Guice make's для Джастина не работает. Что именно вводится? Я не уверен, поможет ли это вам вообще, потому что это очень похоже на то, что Джастин написал выше, но если вы сделаете это таким образом, 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 голосов
/ 16 сентября 2008

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

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

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

...