You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by AlexP <ac...@standardset.com> on 2013/08/24 21:32:16 UTC
Accessing ws:// in embedded ActiveMQ 5.8.0 produces
NullPointerException
Dear ActiveMQ Users:
I am trying to embed the broker in my Java web application. Using Spring
@Configuration, I create a broker and register some connectors:
//Create Broker
final BrokerService broker = new BrokerService();
//Create the network connector
//
final TransportConnector
tcpConnector =
broker.addConnector(tcpURI),
stompConnector =
broker.addConnector(stompURI),
wsConnector =
broker.addConnector("ws://0.0.0.0:61633");
//Start broker
broker.start();
Broker starts without any exceptions or issues. The TCP connector seems to
be working OK. I am able to connect and send messages. However, when I try
to connect to the ws://localhost:61633 via a WebSocket, I get this
exception:
12:17:31.494 engine [qtp131915922-54] WARN ServletHandler - /
java.lang.NullPointerException: null
at
org.apache.activemq.transport.ws.StompServlet.doGet(StompServlet.java:47)
~[activemq-optional-5.7.0.jar:5.7.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
~[servlet-api-3.0.20100224.jar:na]
at
org.eclipse.jetty.websocket.WebSocketServlet.service(WebSocketServlet.java:86)
~[jetty-websocket-8.0.0.M2.jar:8.0.0.M2]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
~[servlet-api-3.0.20100224.jar:na]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)
~[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:447)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1038)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:374)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:972)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at org.eclipse.jetty.server.Server.handle(Server.java:363)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:483)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:920)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:982)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
[jetty-all-server-7.6.7.v20120910.jar:8.0.0.M2]
at java.lang.Thread.run(Thread.java:680) [na:1.6.0_41]
The error occurs in this method:
protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException ,IOException {
getServletContext().getNamedDispatcher("default").forward(request,response);
}
It turns out, that getServletContext().getNamedDispatcher("default")
returns a Null, so the forward gets a NullPointerException.
It seems that performing a broker.start(), does not start something, or
perhaps I am missing some configuration. I am not quite sure. It feels
like my Servlet context is not properly initialized or something when
broker.start() is called.
My application is a Web Application (.war) hosted by Jetty. So, it does
seem that I am starting a Jetty inside of Jetty, but this should not be an
issue due to class-path isolation (I think).
Obviously, I tried this in stand alone version of ActiveMQ and it works
perfectly. So, something is missing from my startup in an embedded
configuration.
I know this is a very specific question, but I would love to have the broker
running embedded and handling the ws:// requests.
If you have some experience with this, please let me know what I could try
to work around this issue.
Thanks.
-AP_
--
View this message in context: http://activemq.2283324.n4.nabble.com/Accessing-ws-in-embedded-ActiveMQ-5-8-0-produces-NullPointerException-tp4670657.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.