Note that there are some explanatory texts on larger screens.

plurals
  1. POWebsockets not supported on blocking connectors
    primarykey
    data
    text
    <p>Im made websocket server. its work on localhost, but when I deploy it to server, I get error. I can not find a solution. On localhost I using gwt server embleded for jetty 8.1.7. on deployment server have too jetty 8.1.7.</p> <pre><code>public abstract class WebSocketServlet extends org.eclipse.jetty.websocket.WebSocketServlet implements TextMessageHandler { private final HashMap&lt;Integer, Socket&gt; sockets = new HashMap&lt;Integer, Socket&gt;(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if ("WebSockets".equalsIgnoreCase(request.getHeader("Upgrade"))) { String origin = request.getHeader("Origin"); if (origin == null) { origin = request.getHeader("Sec-WebSocket-Origin"); } if (!checkOrigin(request, origin)) { response.sendError(HttpServletResponse.SC_FORBIDDEN); return; } } getServletContext().getNamedDispatcher("default").forward(request, response); } public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) { String[] s = request.getPathInfo().split("/"); String ss = (s.length&gt;1?s[1]:"default"); return new Socket(this, ss); } public void send(int token, String message) throws IOException, InvalidTokenException { Socket socket = sockets.get(token); if (socket == null) { throw new InvalidTokenException(); } sockets.get(token).sendMessage(message); } public boolean isOpened(int token) throws InvalidTokenException { Socket socket = sockets.get(token); if (socket == null) { throw new InvalidTokenException(); } return sockets.get(token).isOpen(); } public class InvalidTokenException extends Exception { }; class Socket implements WebSocket.OnTextMessage { private Connection _connection; private TextMessageHandler handler; private String channel; public Socket(TextMessageHandler handler, String channel) { this.handler = handler; this.channel = channel; } @Override public void onClose(int closeCode, String message) { sockets.remove(this._connection.hashCode()); handler.onClose(_connection.hashCode(), channel); } @Override public void onMessage(String data) { handler.onMessage(_connection.hashCode(), channel, data); } public void sendMessage(String data) throws IOException { _connection.sendMessage(data); } public boolean isOpen() { return _connection.isOpen(); } @Override public void onOpen(Connection connection) { sockets.put(connection.hashCode(), this); _connection = connection; handler.onJoin(connection.hashCode(), channel); } } } </code></pre> <p>web.xml</p> <pre><code>&lt;!-- Servlets --&gt; &lt;servlet&gt; &lt;servlet-name&gt;wsservlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.mostka.server.WsServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;wsservlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/socket/*&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; </code></pre> <p>start.xml</p> <pre><code>etc/jetty-jmx.xml etc/jetty.xml etc/jetty-ajp.xml etc/jetty-hightide.xml # etc/jetty-ssl.xml # etc/jetty-requestlog.xml etc/jetty-deploy.xml #etc/jetty-overlay.xml etc/jetty-webapps.xml etc/jetty-contexts.xml etc/jetty-testrealm.xml etc/jetty-jaas.xml </code></pre> <p>jetty.xml</p> <pre><code> &lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt; &lt;!-- =========================================================== --&gt; &lt;!-- Server Thread Pool --&gt; &lt;!-- =========================================================== --&gt; &lt;Set name="ThreadPool"&gt; &lt;!-- Default queued blocking threadpool --&gt; &lt;New class="org.eclipse.jetty.util.thread.QueuedThreadPool"&gt; &lt;Set name="minThreads"&gt;10&lt;/Set&gt; &lt;Set name="maxThreads"&gt;200&lt;/Set&gt; &lt;Set name="detailedDump"&gt;false&lt;/Set&gt; &lt;/New&gt; &lt;/Set&gt; &lt;!-- =========================================================== --&gt; &lt;!-- Set connectors --&gt; &lt;!-- =========================================================== --&gt; &lt;Call name="addConnector"&gt; &lt;Arg&gt; &lt;New class="org.eclipse.jetty.server.nio.SelectChannelConnector"&gt; &lt;Set name="host"&gt;&lt;Property name="jetty.host" /&gt;&lt;/Set&gt; &lt;Set name="port"&gt;&lt;Property name="jetty.port" default="9627"/&gt;&lt;/Set&gt; &lt;Set name="maxIdleTime"&gt;300000&lt;/Set&gt; &lt;Set name="Acceptors"&gt;2&lt;/Set&gt; &lt;Set name="statsOn"&gt;false&lt;/Set&gt; &lt;Set name="confidentialPort"&gt;9626&lt;/Set&gt; &lt;Set name="lowResourcesConnections"&gt;20000&lt;/Set&gt; &lt;Set name="lowResourcesMaxIdleTime"&gt;5000&lt;/Set&gt; &lt;/New&gt; &lt;/Arg&gt; &lt;/Call&gt; &lt;!-- =========================================================== --&gt; &lt;!-- Set handler Collection Structure --&gt; &lt;!-- =========================================================== --&gt; &lt;Set name="handler"&gt; &lt;New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"&gt; &lt;Set name="handlers"&gt; &lt;Array type="org.eclipse.jetty.server.Handler"&gt; &lt;Item&gt; &lt;New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/&gt; &lt;/Item&gt; &lt;Item&gt; &lt;New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/&gt; &lt;/Item&gt; &lt;/Array&gt; &lt;/Set&gt; &lt;/New&gt; &lt;/Set&gt; &lt;!-- =========================================================== --&gt; &lt;!-- extra options --&gt; &lt;!-- =========================================================== --&gt; &lt;Set name="stopAtShutdown"&gt;true&lt;/Set&gt; &lt;Set name="sendServerVersion"&gt;true&lt;/Set&gt; &lt;Set name="sendDateHeader"&gt;true&lt;/Set&gt; &lt;Set name="gracefulShutdown"&gt;1000&lt;/Set&gt; &lt;Set name="dumpAfterStart"&gt;false&lt;/Set&gt; &lt;Set name="dumpBeforeStop"&gt;false&lt;/Set&gt; &lt;/Configure&gt; </code></pre> <p>error:</p> <pre><code>java.lang.IllegalStateException: Websockets not supported on blocking connectors at org.eclipse.jetty.websocket.WebSocketFactory.upgrade(WebSocketFactory.java:214) at org.eclipse.jetty.websocket.WebSocketFactory.acceptWebSocket(WebSocketFactory.java:351) at org.eclipse.jetty.websocket.WebSocketServlet.service(WebSocketServlet.java:104) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:648) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) </code></pre> <p>full error stack <a href="http://sharetext.org/xr5i" rel="nofollow">http://sharetext.org/xr5i</a></p> <p>client sended header</p> <p>Request </p> <pre><code>URL:ws://gwtver.jvmhost.net/socket/testChannel/a?key=123 Request Headersview source Cache-Control:no-cache Connection:Upgrade Host:gwtver.jvmhost.net Origin:http://gwtver.jvmhost.net Pragma:no-cache Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:O0QbqSZsNjKvMfdcElXbNQ== Sec-WebSocket-Version:13 Upgrade:websocket User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 Query String Parametersview sourceview URL encoded key:123 </code></pre> <p>Thanks</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload