webtier@glassfish.java.net

Re: GF 3.1.1 Weocket support - cannot enable WebSockets

From: Ryan Lubke <ryan.lubke_at_oracle.com>
Date: Tue, 17 Jan 2012 08:47:21 -0800

On 1/17/12 6:33 AM, forums_at_java.net wrote:
> Hi,
>
> i want to develop an websocket application. I already developed an
> websocket
> client using weberknecht-websockets and tested it with an server
> implementation using jetty webserver and it works great!
>
> Now i want to try out glassfish. I read that glassfish 3.1.1 supports
> websockets. So i googled a lot and found a few tutorials which
> describes how
> to implement the server side for websockets for glassfish.
>
> My Server Side Implementation looks like:
>
> *WebSocketServlet:*
>
> [java]
>
> package de.gfwebsocket;
> import java.io.IOException;
> import java.io.PrintWriter;
> import java.text.SimpleDateFormat;
> import java.util.Date;
> import javax.servlet.ServletConfig;
> import javax.servlet.ServletException;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> import com.sun.grizzly.websockets.WebSocketEngine;
> /**
> * Servlet implementation class WebSocketServlet
> */
> public class WebSocketServlet extends HttpServlet {
> private static final long serialVersionUID = 1L;
>
> public WebSocketServlet() {
> super();
> // TODO Auto-generated constructor stub
> }
>
> public void init(ServletConfig config) throws ServletException {
> // TODO Auto-generated method stub
> WebSocketEngine.getEngine().register(new
> WebSocketConnection());
> }
>
> protected void doGet(HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException {
> SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy
> HH:mm:ss");
> PrintWriter writer = response.getWriter();
> writer.println("<html>");
> writer.println("<head><title>Hello World
> Servlet</title></head>");
> writer.println("<body>");
> writer.println("<h1>Es ist der " + format.format(new Date()) +
> " Uhr</h1>");
> writer.println("<body>");
> writer.println("</html>");
> writer.flush();
> writer.close();
> }
> protected void doPost(HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException {
> // TODO Auto-generated method stub
> }
> }
> [/java]
>
> *WebSocketConnection*
>
> [java]package de.gfwebsocket;
> import com.sun.grizzly.tcp.Request;
> import com.sun.grizzly.websockets.WebSocket;
> import com.sun.grizzly.websockets.WebSocketApplication;
> import com.sun.grizzly.websockets.WebSocketListener;
> public class WebSocketConnection extends WebSocketApplication{
> @Override
> public WebSocket createSocket(WebSocketListener... listeners) {
> // TODO Auto-generated method stub
> return new WebSocketDataProcess(listeners);
> }
> @Override
> public void onClose(WebSocket socket) {
> // TODO Auto-generated method stub
> super.onClose(socket);
> }
> @Override
> public void onConnect(WebSocket socket) {
> // TODO Auto-generated method stub
> super.onConnect(socket);
> }
> @Override
> public void onMessage(WebSocket socket, String text) {
> socket.send(text);
> //super.onMessage(socket, text);
> }
>
>
> // return true if you want to communicate over websocket otherwise
> return false
> @Override
> public boolean isApplicationRequest(Request arg0) {
> // TODO Auto-generated method stub
> return true;
> }
> }[/java]
>
> *WebSocketDataProcess*
>
> [java]
>
> package de.gfwebsocket;
> import com.sun.grizzly.websockets.BaseServerWebSocket;
> import com.sun.grizzly.websockets.WebSocketListener;
> public class WebSocketDataProcess extends BaseServerWebSocket{
>
> public WebSocketDataProcess(WebSocketListener... listeners) {
> // TODO Auto-generated constructor stub
> super(listeners);
> }
> }[/java]
>
> I exported this project as an .war-File and deployed it in GlassFish
> via web
> console. I tried to reach it by using firefox and it showed me the actual
> time as expected.
>
> But if i try my client to connect with the websocket server, it
> failed. I get
> an exception on client side: "connection failed: unknown status code
> 200".
> My Client works with WebSocket. As i said, i tested it with a jetty
> websocket
> server implementation.
>
> So i tried to enable websockets in glassfish 3.1.1. I started the
> server with
> "./asadmin start-server" and then i tried "./asadmin set
> configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true".
>
> But "set" failed and it does not work.
Failed, as in an error was returned? If so, anything in the logs?

>
>
> So, can anybody help me?
>
> Thank you for your help in advance.
>
> Best regards
>
> hsch
>
>
>
>
> --
>
> [Message sent by forum member 'hsch']
>
> View Post: http://forums.java.net/node/882756
>
>