From f313f77551ad56896d379f0ba666711fce8530a6 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 18 Mar 2014 12:08:27 -0400 Subject: [PATCH] moving to websocket-based server Signed-off-by: Bill Erickson --- WEB-INF/web.xml | 12 +++++++ jetty_control.sh | 2 +- src/org/evergreen_ils/hatch/HatchServlet.java | 2 +- src/org/evergreen_ils/hatch/HatchSocket.java | 40 ++++++++++++++++++++++ .../evergreen_ils/hatch/HatchWebSocketServlet.java | 15 ++++++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/org/evergreen_ils/hatch/HatchSocket.java create mode 100644 src/org/evergreen_ils/hatch/HatchWebSocketServlet.java diff --git a/WEB-INF/web.xml b/WEB-INF/web.xml index 6fb7917eb..48a74fb60 100644 --- a/WEB-INF/web.xml +++ b/WEB-INF/web.xml @@ -6,6 +6,7 @@ metadata-complete="false" version="3.0"> + + + Hatch + + hatch + org.evergreen_ils.hatch.HatchWebSocketServlet + + + hatch + /* + diff --git a/jetty_control.sh b/jetty_control.sh index 3842337ad..4240491cd 100755 --- a/jetty_control.sh +++ b/jetty_control.sh @@ -64,7 +64,7 @@ fi; if [ $OPT_COMPILE -eq 1 ]; then echo "Compiling..." cd $BASE_DIR/src; - javac -Xlint:unchecked -d ../WEB-INF/classes/ -cp "../$JETTY_DIR/lib/*" org/evergreen_ils/hatch/*.java; + javac -Xlint:unchecked -d ../WEB-INF/classes/ -cp "../$JETTY_DIR/lib/*:../$JETTY_DIR/lib/websocket/*" org/evergreen_ils/hatch/*.java; fi; if [ $OPT_RUN -eq 1 ]; then diff --git a/src/org/evergreen_ils/hatch/HatchServlet.java b/src/org/evergreen_ils/hatch/HatchServlet.java index 2fa4f4039..8fece5e1a 100644 --- a/src/org/evergreen_ils/hatch/HatchServlet.java +++ b/src/org/evergreen_ils/hatch/HatchServlet.java @@ -20,7 +20,7 @@ public class HatchServlet extends HttpServlet { static String trustedDomainsString; static String[] trustedDomains; static String profileDirectory; - private static final Logger logger = Log.getLogger("HatchetServlet"); + private static final Logger logger = Log.getLogger("HatchServlet"); @Override public void init(ServletConfig config) throws ServletException { diff --git a/src/org/evergreen_ils/hatch/HatchSocket.java b/src/org/evergreen_ils/hatch/HatchSocket.java new file mode 100644 index 000000000..14316ce37 --- /dev/null +++ b/src/org/evergreen_ils/hatch/HatchSocket.java @@ -0,0 +1,40 @@ +package org.evergreen_ils.hatch; + + +import org.eclipse.jetty.util.FutureCallback; + +import java.io.IOException; +import org.eclipse.jetty.websocket.api.Session; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; +import org.eclipse.jetty.websocket.api.annotations.WebSocket; + +@WebSocket +public class HatchSocket { + + private Session session; + + @OnWebSocketConnect + public void onConnect(Session session) { + System.out.println("Connect: " + session.getRemoteAddress().getAddress()); + this.session = session; + } + + @OnWebSocketClose + public void onClose(int statusCode, String reason) { + System.out.println("Close: statusCode=" + statusCode + ", reason=" + reason); + this.session = null; + } + + @OnWebSocketMessage + public void onMessage(String message) { + System.out.println("Message: " + message); + try { + session.getRemote().sendString("hello : " + message); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/org/evergreen_ils/hatch/HatchWebSocketServlet.java b/src/org/evergreen_ils/hatch/HatchWebSocketServlet.java new file mode 100644 index 000000000..2c3612d63 --- /dev/null +++ b/src/org/evergreen_ils/hatch/HatchWebSocketServlet.java @@ -0,0 +1,15 @@ +package org.evergreen_ils.hatch; + +import javax.servlet.annotation.WebServlet; +import org.eclipse.jetty.websocket.servlet.WebSocketServlet; +import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; + +@SuppressWarnings("serial") +//@WebServlet(name = "Hatch WebSocket Servlet", urlPatterns = { "/ws" }) + +public class HatchWebSocketServlet extends WebSocketServlet { + @Override + public void configure(WebSocketServletFactory factory) { + factory.register(HatchSocket.class); + } +} -- 2.11.0