I have re-posted to DEV so please disregard
From: Bob DeRemer [mailto:[email protected]]
Sent: Saturday, October 19, 2013 8:46 AM
To: Tomcat Users List
Subject: possible tomcat 7.0.47 jsr-356 bug: NULL pointer being thrown when
DecodeException is caught in PojoMessageHandlerWholeBase<T>.onMessage
I am testing what happens when Encode/Decode Exceptions occur during JSR-356
communication and found that in the following code in onMessage, the
((WsSession)session) is NULL. As a result, the actual DecodeException (cause)
is lost.
// Can this message be decoded?
Object payload;
try {
payload = decode(message);
} catch (DecodeException de) {
((WsSession) session).getLocal().onError(session, de);
return;
}
Tracing this further up the stack, I found that Util.getMessageHandlers is
initializing it and passing NULL in for the session:
if (decoderMatch.getTextDecoders().size() > 0) {
MessageHandlerResult result = new MessageHandlerResult(
new PojoMessageHandlerWholeText(listener, m, null,
endpointConfig,
decoderMatch.getTextDecoders(), new Object[1],
0, false, -1, -1),
MessageHandlerResultType.TEXT);
results.add(result);
}
Is this a bug, or do I need to do something else to get this internal session
initialize - in addition to calling: addMessageHandler(this) in the onOpen of
my Endpoint-derived class?
Thanks,
Bob DeRemer
Senior Director, Architecture and Development
[Description: Description: Description: Description:
cid:[email protected]]
http://www.thingworx.com<http://www.thingworx.com/>
Skype: bob.deremer.thingworx
O: 610.594.6200 x812
M: 717.881.3986