mirror of https://github.com/apache/activemq.git
Apply patch from Lukas Treyer to address MQTT over WS in Jetty 9
This commit is contained in:
parent
df8dcb5040
commit
8ca6341d40
|
@ -14,10 +14,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.activemq.transport.ws.jetty8;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -31,21 +31,23 @@ import org.eclipse.jetty.websocket.WebSocketServlet;
|
|||
* Handle connection upgrade requests and creates web sockets
|
||||
*/
|
||||
public class WSServlet extends WebSocketServlet {
|
||||
|
||||
private static final long serialVersionUID = -4716657876092884139L;
|
||||
|
||||
private TransportAcceptListener listener;
|
||||
|
||||
@Override
|
||||
public void init() throws ServletException {
|
||||
super.init();
|
||||
listener = (TransportAcceptListener)getServletContext().getAttribute("acceptListener");
|
||||
listener = (TransportAcceptListener) getServletContext().getAttribute("acceptListener");
|
||||
if (listener == null) {
|
||||
throw new ServletException("No such attribute 'acceptListener' available in the ServletContext");
|
||||
}
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException ,IOException {
|
||||
getServletContext().getNamedDispatcher("default").forward(request,response);
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
getServletContext().getNamedDispatcher("default").forward(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -56,7 +58,7 @@ public class WSServlet extends WebSocketServlet {
|
|||
} else {
|
||||
socket = new StompSocket();
|
||||
}
|
||||
listener.onAccept((Transport)socket);
|
||||
listener.onAccept((Transport) socket);
|
||||
return socket;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,36 +23,39 @@ import javax.servlet.ServletException;
|
|||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.activemq.transport.Transport;
|
||||
import org.apache.activemq.transport.TransportAcceptListener;
|
||||
import org.eclipse.jetty.websocket.api.WebSocketListener;
|
||||
import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
|
||||
import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
||||
|
||||
/**
|
||||
* Handle connection upgrade requests and creates web sockets
|
||||
*/
|
||||
public class WSServlet extends WebSocketServlet {
|
||||
|
||||
private static final long serialVersionUID = -4716657876092884139L;
|
||||
|
||||
private TransportAcceptListener listener;
|
||||
|
||||
@Override
|
||||
public void init() throws ServletException {
|
||||
super.init();
|
||||
listener = (TransportAcceptListener)getServletContext().getAttribute("acceptListener");
|
||||
listener = (TransportAcceptListener) getServletContext().getAttribute("acceptListener");
|
||||
if (listener == null) {
|
||||
throw new ServletException("No such attribute 'acceptListener' available in the ServletContext");
|
||||
}
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException ,IOException {
|
||||
getServletContext().getNamedDispatcher("default").forward(request,response);
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
getServletContext().getNamedDispatcher("default").forward(request, response);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void configure(WebSocketServletFactory factory) {
|
||||
factory.setCreator(new WebSocketCreator() {
|
||||
@Override
|
||||
|
@ -60,13 +63,14 @@ public class WSServlet extends WebSocketServlet {
|
|||
WebSocketListener socket;
|
||||
if (req.getSubProtocols().contains("mqtt")) {
|
||||
socket = new MQTTSocket();
|
||||
resp.setAcceptedSubProtocol("mqtt");
|
||||
} else {
|
||||
socket = new StompSocket();
|
||||
resp.setAcceptedSubProtocol("stomp");
|
||||
}
|
||||
listener.onAccept((Transport) socket);
|
||||
return socket;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue