2013-06-17 18 views
8

Tôi cần một máy chủ jetty với nhiều servletHandler.Thêm trình xử lý khác nhau vào máy chủ Jetty đơn

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(); 

tôi cần cả hai phải ở trong máy chủ duy nhất. Có khả năng nào không?

Trả lời

22

Bạn có thể sử dụng org.eclipse.jetty.server.handler.HandlerCollection (Jetty 9)

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

Sau đó thêm xử lý đến bộ sưu tập:

handlerCollection.addHandler(newHandler); 

Cuối cùng,

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

Xin chào. Tôi đã làm theo lời khuyên của bạn, tôi có thể đi đến servlet của tôi, nhưng khi WebSocket của tôi được mở, tôi nhận được lỗi "Đã nhận được khung nén không mong muốn" và đóng. Làm cách nào để thay đổi các cổng của trình xử lý của tôi để chúng hoạt động trên một kênh khác và không làm phiền lẫn nhau? – sritmak

+0

Rất tuyệt! Cảm ơn rất nhiều! – 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

Đây là một ví dụ của việc sử dụng nhiều bộ xử lý cùng một lúc trên cùng một máy chủ.

Cuối cùng nó sẽ được thêm vào tài liệu ở đây:

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

Cho đến thời điểm đó có rất nhiều ví dụ khác đó mà sẽ giúp làm cho mọi việc rõ ràng hơn là tốt.

Các vấn đề liên quan