2013-06-17 17 views
8

Ho bisogno di un server jetty con più servletHandler.Aggiunta di gestore diverso nel server Jetty singolo

HttpServlet:

ServletHandler servletHandler = new ServletHandler(); 
    server.setHandler(servletHandler); 
    servletHandler.addServletWithMapping("com.realtime.webserver.StreamGlobalServlet", "/SGServlet"); 

WebsocketServlet:

MyWebSocketHandler myWebSocketHandler = new MyWebSocketHandler(); 
      myWebSocketHandler.setHandler(new DefaultHandler()); 
      server.setHandler(myWebSocketHandler); 
      server.start(); 

ho bisogno di entrambi dovrebbero essere in unico server. Esiste qualche possibilità?

risposta

22

È possibile utilizzare org.eclipse.jetty.server.handler.HandlerCollection (molo 9)

HandlerCollection handlerCollection = new HandlerCollection(); 
handlerCollection.setHandlers(new Handler[] {servletHandler, myWebSocketHandler}); 

In seguito aggiungere i gestori alla collezione:

handlerCollection.addHandler(newHandler); 

Infine,

server.setHandler(handlerCollection); 
server.start(); 
+2

Ehi. Ho seguito i tuoi consigli, posso andare al mio servlet, ma quando viene aperta la mia WebSocket, ricevo l'errore "Ricevuto frame compresso inatteso" e si chiude. Come posso cambiare le porte dei miei gestori in modo che funzionino su un canale diverso e non si disturbino a vicenda? – sritmak

+0

Bello! Molte grazie! – pixelstuermer

3

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyHandlers.java

Questo è un esempio di utilizzo di molti gestori in una sola volta sullo stesso server.

Alla fine si sarà aggiunta alla documentazione qui:

http://www.eclipse.org/jetty/documentation/current/embedded-examples.html

Fino a quel momento ci sono molti altri esempi là che dovrebbero contribuire a rendere le cose più chiare pure.

Problemi correlati