2012-10-27 29 views
6

có bất kỳ ý tưởng nào, cách chạy ứng dụng của tôi trong DevMode với WebsocketConnection đang hoạt động không? Đầu tiên tôi nghĩ rằng các jetty jars bị mất (websocket, continuation, http, io, server và util) là lý do cho các lỗi, bởi vì khi tôi biên dịch ứng dụng và đặt nó trên một cầu nối bên ngoài, không có vấn đề gì với WebsocketConnection. Vì vậy, tôi đã tìm kiếm chúng và thêm chúng vào dự án của tôi. Nhưng bây giờ mọi tôi bắt đầu nó trong devmode tôi nhận được một exceptionlike này:Sử dụng Websockets trong GWT DevMode

[WARN] /testchat/WebSocketChatServlet 
java.lang.NullPointerException 
at org.eclipse.jetty.websocket.WebSocketFactory.upgrade(WebSocketFactory.java:197) 
at org.eclipse.jetty.websocket.WebSocketFactory.acceptWebSocket(WebSocketFactory.java:304) 
at org.eclipse.jetty.websocket.WebSocketServlet.service(WebSocketServlet.java:78) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:324) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 

[LỖI] 500 - GET/testchat/WebSocketChatServlet (127.0.0.1) 3129 byte

máy chủ nhúng

Trả lời

8

devmode là Jetty 6, không hỗ trợ WebSockets. Google đã cố gắng nâng cấp nó lên Jetty 7 một vài năm trước đây, nhưng có vấn đề với các trình nạp lớp mà họ không thể làm việc.

Cách duy nhất để sử dụng WebSockets là sử dụng một máy chủ bên ngoài (hoặc, nếu bạn có thể giải quyết các vấn đề classloading, viết riêng của bạn ServletContainerLauncher) và chạy trong chế độ devmode -noserver.
Xem Using my own server in development mode instead of GWT's built-in Jetty instance

+0

Thomas, bạn có quan tâm đến việc giúp bạn với điều này không? Lưu ý câu trả lời khác ở đây từ –

+2

Chắc chắn! Lưu ý rằng không chỉ GWT cần được cập nhật, mà còn là SDK AppEngine. Ngoài ra, tôi cho một người đang quảng bá Maven, với việc tách mã máy chủ và máy khách thành các mô-đun riêng biệt, có nghĩa là bạn không sử dụng máy chủ nhúng của DevMode, nhưng nó vẫn cần ít nhất cho các thử nghiệm GWT JUnit. Đừng ngần ngại gửi thư trên https://groups.google.com/d/forum/google-web-toolkit-contributors và TIA –

10

Nhóm Jetty chỉ quá hạnh phúc để giúp cổng Google GWT thành cầu cảng-7. Chúng tôi đã thực sự liên lạc với họ vài lần về nó trong khoảng thời gian vài năm, bao gồm gửi cùng mã, tuy nhiên chúng tôi chưa bao giờ có phản hồi từ họ. Vì vậy, Google, nếu bạn đang nghe, chúng tôi sẵn sàng trợ giúp :)

Jan

+2

@Thomas trong nhận xét khác là thành viên của ủy ban chỉ đạo GWT, có thể bạn có thể ping cho anh ta về điều này. –

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