You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Igal @ Lucee.org" <ig...@lucee.org> on 2016/12/07 00:25:36 UTC
WebSocket Handshake returns Unexpected Response Code 500
This is a cross post with
http://stackoverflow.com/questions/41007216/websocket-handshake-on-tomcat-returns-unexpected-response-code-500
:
I have a WebSocket application that registers the endpoint
programmatically, without the use of Annotations.
The relevant code is:
|ServerEndpointConfig.Configurator configurator =
(ServerEndpointConfig.Configurator)configuratorClass.newInstance();
ServerEndpointConfig serverEndpointConfig = ServerEndpointConfig.Builder
.create(endpointClass, endpointPath) .configurator(configurator)
.build(); ServerContainer serverContainer = (ServerContainer)app
.getServletContext()
.getAttribute("javax.websocket.server.ServerContainer");
serverContainer.addEndpoint(serverEndpointConfig); |
Everything works fine when I run it inside an IDE with an embedded Jetty
container, where the dependency is on tomcat-websocket and
tomcat-websocket-api libraries via Maven, but when I deploy it in Tomcat
(8.5.5), and then try to establish a WebSocket connection, I get the
following error in the browser's console:
WebSocket connection to 'ws://127.0.0.1:8080/echo' failed: Error
during WebSocket handshake: Unexpected response code: 500
I do not get any error or other information logged in the Catalina
output, and am not sure how to go about debugging this issue.
I need to configure the endpoint programmatically because much of the
information is not known at compile time, so please do not point me to
an Annotation solution.
Any help would be greatly appreciated, thanks!
--
Igal Sapir
Lucee Core Developer
Lucee.org <http://lucee.org/>
Re: WebSocket Handshake returns Unexpected Response Code 500
Posted by "Igal @ Lucee.org" <ig...@lucee.org>.
OK, apparently HandshakeRequest's getRequestURI().getAuthority() returns
null and my code didn't account for that.
I'm surprised that nothing was logged anywhere though, even with a FINE
log level.
Igal Sapir
Lucee Core Developer
Lucee.org <http://lucee.org/>
On 12/6/2016 5:18 PM, Igal @ Lucee.org wrote:
> On 12/6/2016 4:25 PM, Igal @ Lucee.org wrote:
>>
>> This is a cross post with
>> http://stackoverflow.com/questions/41007216/websocket-handshake-on-tomcat-returns-unexpected-response-code-500
>> :
>>
>> I have a WebSocket application that registers the endpoint
>> programmatically, without the use of Annotations.
>>
>> The relevant code is:
>>
>> |ServerEndpointConfig.Configurator configurator =
>> (ServerEndpointConfig.Configurator)configuratorClass.newInstance();
>> ServerEndpointConfig serverEndpointConfig =
>> ServerEndpointConfig.Builder .create(endpointClass, endpointPath)
>> .configurator(configurator) .build(); ServerContainer serverContainer
>> = (ServerContainer)app .getServletContext()
>> .getAttribute("javax.websocket.server.ServerContainer");
>> serverContainer.addEndpoint(serverEndpointConfig); |
>>
>> Everything works fine when I run it inside an IDE with an embedded
>> Jetty container, where the dependency is on tomcat-websocket and
>> tomcat-websocket-api libraries via Maven, but when I deploy it in
>> Tomcat (8.5.5), and then try to establish a WebSocket connection, I
>> get the following error in the browser's console:
>>
>> WebSocket connection to 'ws://127.0.0.1:8080/echo' failed: Error
>> during WebSocket handshake: Unexpected response code: 500
>>
>> I do not get any error or other information logged in the Catalina
>> output, and am not sure how to go about debugging this issue.
>>
>> I need to configure the endpoint programmatically because much of the
>> information is not known at compile time, so please do not point me
>> to an Annotation solution.
>>
>> Any help would be greatly appreciated, thanks!
>>
> I have set the log level to FINE, and here is the relevant snippet:
>
> T.550 FINE [http-nio-IP-Acceptor-0]
> o.a.tomcat.util.threads.LimitLatch.countUpOrAwait Counting
> up[http-nio-IP-Acceptor-0] latch=2
> T.551 FINE [http-nio-IP-exec-3]
> o.a.coyote.AbstractProtocol$ConnectionHandler.process Processing
> socket
> [o.a.tomcat.util.net.NioChannel@1e87b268:java.nio.channels.SocketChannel[connected
> local=/192.168.1.17:8080 remote=/192.168.1.17:51259]] with status
> [OPEN_READ]
> T.551 FINE [http-nio-IP-exec-3]
> o.a.coyote.http11.Http11InputBuffer.parseRequestLine Received [GET
> /echo HTTP/1.1
> Host: 192.168.1.17:8080
> Connection: Upgrade
> Pragma: no-cache
> Cache-Control: no-cache
> Upgrade: websocket
> Origin: http://192.168.1.17:8080
> Sec-WebSocket-Version: 13
> User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
> Accept-Encoding: gzip, deflate, sdch
> Accept-Language: en-US,en;q=0.8
> Cookie: LUCEE_ADMIN_LANG=en;
> cfid=de1b0016-ad0c-4601-b8ce-ecb47771b9c8; cftoken=0;
> LUCEE_ADMIN_LASTPAGE=debugging.logs
> Sec-WebSocket-Key: Ogg0VPp9O3XZlR8rrgz4Gg==
> Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
>
> ]
> T.553 FINE [http-nio-IP-exec-3]
> o.a.tomcat.util.http.Rfc6265CookieProcessor.parseCookieHeader Cookies:
> Parsing b[]: LUCEE_ADMIN_LANG=en;
> cfid=de1b0016-ad0c-4601-b8ce-ecb47771b9c8; cftoken=0;
> LUCEE_ADMIN_LASTPAGE=debugging.logs
> T.554 FINE [http-nio-IP-exec-3]
> o.a.catalina.authenticator.AuthenticatorBase.invoke Security checking
> request GET /echo
> T.554 FINE [http-nio-IP-exec-3]
> o.a.catalina.realm.RealmBase.findSecurityConstraints No applicable
> constraints defined
> T.554 FINE [http-nio-IP-exec-3]
> o.a.catalina.authenticator.AuthenticatorBase.invoke Not subject to
> any constraint
> T.561 FINE [http-nio-IP-exec-3]
> o.a.tomcat.util.http.Parameters.setEncoding Set encoding to ISO-8859-1
> T.563 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass
> loadClass(o.a.tomcat.util.collections.LocalStrings, false)
> T.563 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass Delegating to
> parent classloader1 java.net.URLClassLoader@31befd9f
> T.563 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass Searching local
> repositories
> T.563 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.findClass
> findClass(o.a.tomcat.util.collections.LocalStrings)
> T.564 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.findClass --> Returning
> ClassNotFoundException
> T.564 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> getResourceAsStream(org/apache/tomcat/util/collections/LocalStrings.properties)
> T.564 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> Delegating to parent classloader java.net.URLClassLoader@31befd9f
> T.565 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> Searching local repositories
> T.565 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream -->
> Resource not found, returning null
> T.566 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass
> loadClass(o.a.tomcat.util.collections.LocalStrings_en, false)
> T.566 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass Delegating to
> parent classloader1 java.net.URLClassLoader@31befd9f
> T.567 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass Searching local
> repositories
> T.567 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.findClass
> findClass(o.a.tomcat.util.collections.LocalStrings_en)
> T.568 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.findClass --> Returning
> ClassNotFoundException
> T.569 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> getResourceAsStream(org/apache/tomcat/util/collections/LocalStrings_en.properties)
> T.569 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> Delegating to parent classloader java.net.URLClassLoader@31befd9f
> T.570 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> Searching local repositories
> T.571 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream -->
> Resource not found, returning null
> T.571 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass
> loadClass(o.a.tomcat.util.collections.LocalStrings_en_US, false)
> T.571 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass Delegating to
> parent classloader1 java.net.URLClassLoader@31befd9f
> T.572 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.loadClass Searching local
> repositories
> T.572 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.findClass
> findClass(o.a.tomcat.util.collections.LocalStrings_en_US)
> T.573 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.findClass --> Returning
> ClassNotFoundException
> T.573 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> getResourceAsStream(org/apache/tomcat/util/collections/LocalStrings_en_US.properties)
> T.573 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> Delegating to parent classloader java.net.URLClassLoader@31befd9f
> T.574 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
> Searching local repositories
> T.574 FINE [http-nio-IP-exec-3]
> o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream -->
> Resource not found, returning null
> T.581 FINE [http-nio-IP-exec-3]
> o.a.coyote.AbstractProcessorLight.process Socket:
> [o.a.tomcat.util.net.NioEndpoint$NioSocketWrapper@6689cfeb:o.a.tomcat.util.net.NioChannel@1e87b268:java.nio.channels.SocketChannel[connected
> local=/192.168.1.17:8080 remote=/192.168.1.17:51259]], Status in:
> [OPEN_READ], State out: [CLOSED]
> T.582 FINE [http-nio-IP-exec-3]
> o.a.tomcat.util.threads.LimitLatch.countDown Counting
> down[http-nio-IP-exec-3] latch=2
> T.114 FINE [http-nio-IP-exec-4]
> o.a.coyote.AbstractProtocol$ConnectionHandler.process Processing
> socket
> [o.a.tomcat.util.net.NioChannel@406eaa39:java.nio.channels.SocketChannel[connected
> local=/192.168.1.17:8080 remote=/192.168.1.17:51254]] with status [ERROR]
> T.115 FINE [http-nio-IP-exec-4]
> o.a.tomcat.util.threads.LimitLatch.countDown Counting
> down[http-nio-IP-exec-4] latch=1
>
Re: WebSocket Handshake returns Unexpected Response Code 500
Posted by "Igal @ Lucee.org" <ig...@lucee.org>.
On 12/6/2016 4:25 PM, Igal @ Lucee.org wrote:
>
> This is a cross post with
> http://stackoverflow.com/questions/41007216/websocket-handshake-on-tomcat-returns-unexpected-response-code-500
> :
>
> I have a WebSocket application that registers the endpoint
> programmatically, without the use of Annotations.
>
> The relevant code is:
>
> |ServerEndpointConfig.Configurator configurator =
> (ServerEndpointConfig.Configurator)configuratorClass.newInstance();
> ServerEndpointConfig serverEndpointConfig =
> ServerEndpointConfig.Builder .create(endpointClass, endpointPath)
> .configurator(configurator) .build(); ServerContainer serverContainer
> = (ServerContainer)app .getServletContext()
> .getAttribute("javax.websocket.server.ServerContainer");
> serverContainer.addEndpoint(serverEndpointConfig); |
>
> Everything works fine when I run it inside an IDE with an embedded
> Jetty container, where the dependency is on tomcat-websocket and
> tomcat-websocket-api libraries via Maven, but when I deploy it in
> Tomcat (8.5.5), and then try to establish a WebSocket connection, I
> get the following error in the browser's console:
>
> WebSocket connection to 'ws://127.0.0.1:8080/echo' failed: Error
> during WebSocket handshake: Unexpected response code: 500
>
> I do not get any error or other information logged in the Catalina
> output, and am not sure how to go about debugging this issue.
>
> I need to configure the endpoint programmatically because much of the
> information is not known at compile time, so please do not point me to
> an Annotation solution.
>
> Any help would be greatly appreciated, thanks!
>
I have set the log level to FINE, and here is the relevant snippet:
T.550 FINE [http-nio-IP-Acceptor-0]
o.a.tomcat.util.threads.LimitLatch.countUpOrAwait Counting
up[http-nio-IP-Acceptor-0] latch=2
T.551 FINE [http-nio-IP-exec-3]
o.a.coyote.AbstractProtocol$ConnectionHandler.process Processing socket
[o.a.tomcat.util.net.NioChannel@1e87b268:java.nio.channels.SocketChannel[connected
local=/192.168.1.17:8080 remote=/192.168.1.17:51259]] with status
[OPEN_READ]
T.551 FINE [http-nio-IP-exec-3]
o.a.coyote.http11.Http11InputBuffer.parseRequestLine Received [GET /echo
HTTP/1.1
Host: 192.168.1.17:8080
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://192.168.1.17:8080
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: LUCEE_ADMIN_LANG=en;
cfid=de1b0016-ad0c-4601-b8ce-ecb47771b9c8; cftoken=0;
LUCEE_ADMIN_LASTPAGE=debugging.logs
Sec-WebSocket-Key: Ogg0VPp9O3XZlR8rrgz4Gg==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
]
T.553 FINE [http-nio-IP-exec-3]
o.a.tomcat.util.http.Rfc6265CookieProcessor.parseCookieHeader Cookies:
Parsing b[]: LUCEE_ADMIN_LANG=en;
cfid=de1b0016-ad0c-4601-b8ce-ecb47771b9c8; cftoken=0;
LUCEE_ADMIN_LASTPAGE=debugging.logs
T.554 FINE [http-nio-IP-exec-3]
o.a.catalina.authenticator.AuthenticatorBase.invoke Security checking
request GET /echo
T.554 FINE [http-nio-IP-exec-3]
o.a.catalina.realm.RealmBase.findSecurityConstraints No applicable
constraints defined
T.554 FINE [http-nio-IP-exec-3]
o.a.catalina.authenticator.AuthenticatorBase.invoke Not subject to any
constraint
T.561 FINE [http-nio-IP-exec-3]
o.a.tomcat.util.http.Parameters.setEncoding Set encoding to ISO-8859-1
T.563 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass
loadClass(o.a.tomcat.util.collections.LocalStrings, false)
T.563 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass Delegating to
parent classloader1 java.net.URLClassLoader@31befd9f
T.563 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass Searching local
repositories
T.563 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.findClass
findClass(o.a.tomcat.util.collections.LocalStrings)
T.564 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.findClass --> Returning
ClassNotFoundException
T.564 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
getResourceAsStream(org/apache/tomcat/util/collections/LocalStrings.properties)
T.564 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream Delegating
to parent classloader java.net.URLClassLoader@31befd9f
T.565 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream Searching
local repositories
T.565 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream -->
Resource not found, returning null
T.566 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass
loadClass(o.a.tomcat.util.collections.LocalStrings_en, false)
T.566 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass Delegating to
parent classloader1 java.net.URLClassLoader@31befd9f
T.567 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass Searching local
repositories
T.567 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.findClass
findClass(o.a.tomcat.util.collections.LocalStrings_en)
T.568 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.findClass --> Returning
ClassNotFoundException
T.569 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
getResourceAsStream(org/apache/tomcat/util/collections/LocalStrings_en.properties)
T.569 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream Delegating
to parent classloader java.net.URLClassLoader@31befd9f
T.570 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream Searching
local repositories
T.571 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream -->
Resource not found, returning null
T.571 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass
loadClass(o.a.tomcat.util.collections.LocalStrings_en_US, false)
T.571 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass Delegating to
parent classloader1 java.net.URLClassLoader@31befd9f
T.572 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.loadClass Searching local
repositories
T.572 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.findClass
findClass(o.a.tomcat.util.collections.LocalStrings_en_US)
T.573 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.findClass --> Returning
ClassNotFoundException
T.573 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
getResourceAsStream(org/apache/tomcat/util/collections/LocalStrings_en_US.properties)
T.573 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream Delegating
to parent classloader java.net.URLClassLoader@31befd9f
T.574 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream Searching
local repositories
T.574 FINE [http-nio-IP-exec-3]
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream -->
Resource not found, returning null
T.581 FINE [http-nio-IP-exec-3]
o.a.coyote.AbstractProcessorLight.process Socket:
[o.a.tomcat.util.net.NioEndpoint$NioSocketWrapper@6689cfeb:o.a.tomcat.util.net.NioChannel@1e87b268:java.nio.channels.SocketChannel[connected
local=/192.168.1.17:8080 remote=/192.168.1.17:51259]], Status in:
[OPEN_READ], State out: [CLOSED]
T.582 FINE [http-nio-IP-exec-3]
o.a.tomcat.util.threads.LimitLatch.countDown Counting
down[http-nio-IP-exec-3] latch=2
T.114 FINE [http-nio-IP-exec-4]
o.a.coyote.AbstractProtocol$ConnectionHandler.process Processing socket
[o.a.tomcat.util.net.NioChannel@406eaa39:java.nio.channels.SocketChannel[connected
local=/192.168.1.17:8080 remote=/192.168.1.17:51254]] with status [ERROR]
T.115 FINE [http-nio-IP-exec-4]
o.a.tomcat.util.threads.LimitLatch.countDown Counting
down[http-nio-IP-exec-4] latch=1