moving to websocket-based server
authorBill Erickson <berick@esilibrary.com>
Tue, 18 Mar 2014 16:08:27 +0000 (12:08 -0400)
committerBill Erickson <berick@esilibrary.com>
Tue, 18 Mar 2014 16:08:27 +0000 (12:08 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
WEB-INF/web.xml
jetty_control.sh
src/org/evergreen_ils/hatch/HatchServlet.java
src/org/evergreen_ils/hatch/HatchSocket.java [new file with mode: 0644]
src/org/evergreen_ils/hatch/HatchWebSocketServlet.java [new file with mode: 0644]

index 6fb7917..48a74fb 100644 (file)
@@ -6,6 +6,7 @@
    metadata-complete="false"
    version="3.0">
  
+  <!--
   <servlet>
     <servlet-name>Hatch</servlet-name>
     <servlet-class>org.evergreen_ils.hatch.HatchServlet</servlet-class>
     <servlet-name>Hatch</servlet-name>
     <url-pattern>/*</url-pattern>
   </servlet-mapping>
+  -->
+
+    <display-name>Hatch</display-name>
+    <servlet>
+        <servlet-name>hatch</servlet-name>
+        <servlet-class>org.evergreen_ils.hatch.HatchWebSocketServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>hatch</servlet-name>
+        <url-pattern>/*</url-pattern>
+    </servlet-mapping>
 
     <context-param>  
         <description>
index 3842337..4240491 100755 (executable)
@@ -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
index 2fa4f40..8fece5e 100644 (file)
@@ -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 (file)
index 0000000..14316ce
--- /dev/null
@@ -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 (file)
index 0000000..2c3612d
--- /dev/null
@@ -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);
+    }
+}