2010-11-12 17 views
17

J'essaie de comprendre Jetty;Jetée: servlets vs handlers

Dites-moi s'il vous plaît:

1) Quand est-il préférable d'utiliser Servlets et quand Handlers?

2) Puis-je utiliser des connecteurs avec des servlets pour le "modèle thread-per-request"?

Merci!

Répondre

24

Dans Jetty Handlers gérer les demandes qui viennent à travers les connecteurs. L'un des gestionnaires, en particulier ServletHandler, permet à Jetty de prendre en charge (principalement) les servlets. Servlet est un concept Java EE portable, vous pouvez donc concevoir votre application de manière plus portable si vous utilisez des servlets dans Jetty. D'un autre côté, ils sont susceptibles de générer des frais supplémentaires. Vous pouvez donc implémenter directement un gestionnaire qui traiterait les demandes provenant des connecteurs. Si vous utilisez des servlets dans Jetty, vous pouvez compter sur le modèle de sécurité de servlet, sur le support de session, etc. Si cela n'est pas nécessaire pour votre application, mieux vaut implémenter un gestionnaire très simple.

+0

merci pour la réponse! – Karan

+1

@Karan: Merci pour la réputation! – Olaf

+0

Merci beaucoup pour votre réponse !!! – Edward83

1

Une observation intéressante que j'ai trouvée quand elle a été jouée avec. J'ai eu une application basée sur la jetée (dropwizard.io) et ici je comptais ajouter après gestionnaire réel (il y avait des cas d'utilisation spéciale pour elle)

server.start() 

en utilisant org.eclipse.jetty.servlet.ServletContextHandler.insertHandler(HandlerWrapper handler) il jette juste illegalStateException: STARTED si le serveur a déjà commencé . En raison de:

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

Mais en cas de org.eclipse.jetty.servlet.ServletContextHandler.addServlet(ServletHolder servlet,String pathSpec) il ajoutera votre servlet à la collecte de servlet existant et tout fonctionnera.

+0

Merci, très intéressant. – Edward83