Archive of wiki.eclipse.org/jetty for End of Life (EOL) Eclipse Jetty 7 and Eclipse Jetty 8.

Eclipse Jetty 7 Archive Home

Jetty WTP Plugin/Jetty WTP Websocket Wizard


Using the Jetty Websocket Wizard

The plugin, org.eclipse.jst.server.jetty.ui.websocket, provides a wizard that you can use to create a Jetty WebSocket.

This document provides examples for the following tasks:

  • Creating an implementataion of the org.eclipse.jetty.websocket.WebSocketServlet, which uses an implementation of org.eclipse.jetty.websocket.WebSocket
  • Modifying the web.xml to declare the WebSocketServlet createdt-name + servlet-mapping). ??
  • TODO : create an HTML page that calls the WebSocketServlet.

To create a WebSocketServlet, complete the following steps.

  1. In the Eclipse menu, navigate to File->New>-Other .
  2. The Select a wizard dialog box opens.


    Jetty-wtp-websocket1.jpg

  3. Select Web/Jetty WebSocket .
  4. The Create Jetty-WebSocket dialog box opens.

    .


    Jetty-wtp-websocket2.jpg


  5. In the Java package field, enter org.sample.websocket .
  6. In the Class name field, enter ChatWebSocketServlet .
  7. The Superclass field is automatically filled as org.eclipse.jetty.websocket.WebSocketServlet.
  8. Click Next .
  9. The Create Jetty-WebSocket Deployment Descriptor dialog box opens.


    Jetty-wtp-websocket3.jpg


    This is the same dialog box that the Servlet uses.

  10. Here you can define the servlet-mappings.
  11. Click Next .
  12. The Create Jetty-WebSocket Modifiers, Interfaces and Methods dialog box opens.


    Jetty-wtp-websocket4.jpg


  13. Here you can generate some methods. The wizard generates doPost for WebSocket using ???
  14. Click Finish .
  15. Your workspace looks like this :


    Jetty-wtp-websocket5.jpg


    The wizard generates :

    • a class ChatWebSocketServlet :
    package org.sample.websocket;
     
    import java.io.IOException;
    import java.util.Set;
    import java.util.concurrent.CopyOnWriteArraySet;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.eclipse.jetty.websocket.WebSocket;
    import org.eclipse.jetty.websocket.WebSocketServlet;
     
    /**
     * Jetty WebSocketServlet implementation class ChatWebSocketServlet
     */
                          public
                          class
                          ChatWebSocketServlet
                          extends
                          WebSocketServlet
                          {
                          private
                          static
                          final
                          long
                          serialVersionUID
                          =
                          1L
                          ;
                          /**
         * @see WebSocketServlet#WebSocketServlet()
         */
                          public
                          ChatWebSocketServlet
                          (
                          )
                          {
                          super
                          (
                          )
                          ;
                          // TODO Auto-generated constructor stub
                          }
                          private
                          final
                          Set
                          <
                          ChatWebSocket
                          >
                          members
                          =
                          new
                          CopyOnWriteArraySet
                          <
                          ChatWebSocket
                          >
                          (
                          )
                          ;
                          /**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
                          protected
                          void
                          doGet
                          (
                          HttpServletRequest request, HttpServletResponse response
                          )
                          throws
                          ServletException,
                          IOException
                          {
                          // TODO Auto-generated method stub
                          }
                          /**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
                          protected
                          void
                          doPost
                          (
                          HttpServletRequest request, HttpServletResponse response
                          )
                          throws
                          ServletException,
                          IOException
                          {
                          getServletContext
                          (
                          )
                          .
                          getNamedDispatcher
                          (
                          "default"
                          )
                          .
                          forward
                          (
                          request, response
                          )
                          ;
                          }
                          /*
    	 * @see org.eclipse.jetty.websocket.WebSocketServlet#doWebSocketConnect(javax.servlet.http.HttpServletRequest, java.lang.String)
    	 */
                          protected
                          WebSocket doWebSocketConnect
                          (
                          HttpServletRequest request,
                          String
                          protocol
                          )
                          {
                          return
                          new
                          ChatWebSocket
                          (
                          )
                          ;
                          }
                          class
                          ChatWebSocket
                          implements
                          WebSocket
                          {
                          private
                          Outbound outbound
                          ;
                          public
                          void
                          onConnect
                          (
                          Outbound outbound
                          )
                          {
                          this
                          .
                          outbound
                          =
                          outbound
                          ;
                          members.
                          add
                          (
                          this
                          )
                          ;
                          }
                          /*
    		 * @see org.eclipse.jetty.websocket.WebSocket#onMessage(byte, byte[],
    		 * int, int)
    		 */
                          public
                          void
                          onMessage
                          (
                          byte
                          frame,
                          byte
                          [
                          ]
                          data,
                          int
                          offset,
                          int
                          length
                          )
                          {
                          }
                          /*
    		 * @see org.eclipse.jetty.websocket.WebSocket#onMessage(byte,
    		 * java.lang.String)
    		 */
                          public
                          void
                          onMessage
                          (
                          byte
                          frame,
                          String
                          data
                          )
                          {
                          for
                          (
                          ChatWebSocket member
                          :
                          members
                          )
                          {
                          try
                          {
                          member.
                          outbound
                          .
                          sendMessage
                          (
                          frame, data
                          )
                          ;
                          }
                          catch
                          (
                          IOException
                          e
                          )
                          {
                          // org.eclipse.jetty.util.log.Log.warn(e);
                          e.
                          printStackTrace
                          (
                          )
                          ;
                          }
                          }
                          }
                          /*
    		 * @see org.eclipse.jetty.websocket.WebSocket#onDisconnect()
    		 */
    		public void onDisconnect() {
    			members.remove(this);
    		}
    	}
     
     
    }

    1.web.xml is modified like this :

      <servlet>
        <description></description>
        <display-name>ChatWebSocketServlet</display-name>
        <servlet-name>ChatWebSocketServlet</servlet-name>
        <servlet-class>org.sample.websocket.ChatWebSocketServlet</servletclass>
      </servlet>
      <servlet-mapping>
        <servlet-name>ChatWebSocketServlet</servlet-name>
        <url-pattern>/ChatWebSocketServlet</url-pattern>
      </servlet-mapping>
    2.TODO : generate an HTML file which consume the WebSocket.