2008-09-16 17 views
0

Sorun basit, ama zaten biraz uğraşıyorum.Gömme sunucu uygulaması nasıl hevesle başlatılır?

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

Bu, Jetty dünyasının herhangi bir yerinde bulabileceğiniz oldukça standart bir kod parçasıdır. Jetty'yi bir sunucu motoru olarak gömerek ve bazı servletleri olan bir uygulamam var.

Bu servletlerin bazılarının örneklenmesi, başlangıçta yoğun çalışma gerektirir. –, ek yapılandırma dosyalarını okuyarak, veritabanına bağlanarak, vb. Deyin. Servlet motorunu tüm sunucularını hevesle nasıl gerçekleştirebilirim, böylece ilk kullanıcı isteğinde değil, tüm zor işi önceden yapabilirim?

cevap

2

Neden Guice make'in Justin'in seçeneğini kullanmanızın sizin için uygun olmadığından emin değilim. Tam olarak ne enjekte ediliyor? Bunun sana yardım edip etmeyeceğinden emin değilim çünkü Justin'in yukarıda yazdığı şeye çok benziyor, ama eğer bu şekilde yaparsanız, Jetty gerçek anlamda bir örnek oluşturacaktır.

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

Servlet'in özel alanları enjekte edilir. Bu cevap daha iyi, ama hala belirleyemediğim bazı eksik bayraklar için umduğum gibi ve jety hevesle her şeyi başlatacak. Her neyse, bununla yaşamak zorunda kalacağım. – Marcin

0

ServletHolder kullanan Context.addServlet aşırı yüklenmesini kullanın. ServletHolder, bir Sınıfı veya bir Servlet örneğini kabul eden bir sınıftır.

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

Bu, Jetty 6'yı varsayar. Jetty 7 için de çalışacağını düşünüyorum.

+0

Justin, bu hile yapar. Ancak birkaç nedenden ötürü (yani gizli Guice tabanlı bağımlılık enjeksiyonu) benim için servletleri hevesle başlatmak için Jetty'e ihtiyacım var. – Marcin