2010-11-12 10 views
17

Estoy intentando comprender Jetty;Embarcadero: servlets vs handlers

Dime por favor:

1) ¿Cuándo es mejor usar servlets y Cuando los manipuladores?

2) ¿Puedo usar conectores con servlets para "modelo de hilo por solicitud"?

Gracias!

Respuesta

24

En Jetty Handlers manejan las solicitudes que vienen a través de los conectores. Uno de los controladores, específicamente ServletHandler, permite a Jetty (principalmente) soportar servlets. Servlet es un concepto portátil de Java EE, por lo que puede diseñar su aplicación de una manera más portátil si utiliza servlets en Jetty. Por otro lado, es probable que aporten algo de sobrecarga, por lo que es posible que desee implementar un Manejador directamente que manejaría las solicitudes provenientes de los Conectores.

Si está utilizando servlets en Jetty, puede confiar en el modelo de seguridad de servlet, en el soporte de sesión, etc. Si esto no es necesario para su aplicación, será mejor que implemente un controlador muy simple.

+0

gracias por la respuesta! – Karan

+1

@Karan: ¡Gracias por la reputación! – Olaf

+0

¡Muchas gracias por su respuesta! – Edward83

1

Una observación interesante que encontré cuando jugué con ella. Tenía una aplicación basada en el embarcadero (dropwizard.io) y aquí estaba planeando añadir después manejador real (no hubo casos de uso especial para ello)

server.start() 

usando org.eclipse.jetty.servlet.ServletContextHandler.insertHandler(HandlerWrapper handler) simplemente lanza illegalStateException: STARTED si el servidor ya comenzó . Debido a:

public void setHandler(Handler handler) { 
     if (isStarted()) 
      throw new IllegalStateException(STARTED); 
     //.. 

Pero en caso de org.eclipse.jetty.servlet.ServletContextHandler.addServlet(ServletHolder servlet,String pathSpec) que se sumará a su colección servlet a servlet existente y todo lo que va a funcionar.

+0

Gracias, muy interesante. – Edward83