Skip to content

Not running on Jetty, JSR-356 support unavailable #1

Description

@2efPer

I deployed the Servlet on Tomcat 7.0.67.

`public class Test extends JettySocketIOServlet
{
private static final String ANNOUNCEMENT = "announcement"; // server to all connected clients
private static final String CHAT_MESSAGE = "chat message"; // broadcast to room
private static final String WELCOME = "welcome"; // single event sent by server to specific client
private static final String FORCE_DISCONNECT = "force disconnect"; // client requests server to disconnect
private static final String SERVER_BINARY = "server binary"; // client requests server to send a binary
private static final String CLIENT_BINARY = "client binary"; // client sends binary
private static final long serialVersionUID = 1L;

@Override
@SuppressWarnings("unchecked")
public void init(ServletConfig config) throws ServletException
{
  //  JdkOverLog4j.install();
    System.out.println("Init............");
    super.init(config);

    of("/chat").on(new ConnectionListener()
    {
        @Override
        public void onConnect(final Socket socket)
        {
            try
            {
                socket.emit(WELCOME, "Welcome to Socket.IO Chat, " + socket.getRequest().getRemoteAddr() + "!");

                socket.join("room");
            }
            catch (SocketIOException e)
            {
                e.printStackTrace();
                socket.disconnect(true);
            }

            socket.on(new DisconnectListener() {

                @Override
                public void onDisconnect(Socket socket, DisconnectReason reason, String errorMessage)
                {
                    of("/chat").emit(ANNOUNCEMENT, socket.getSession().getSessionId() + " disconnected");
                }
            });

            socket.on(CHAT_MESSAGE, new EventListener()
            {
                @Override
                public Object onEvent(String name, Object[] args, boolean ackRequested)
                {
                    System.out.println("Received chat message: " + args[0]);

                    try
                    {
                        socket.broadcast("room", CHAT_MESSAGE, socket.getId(), args[0]);
                    }
                    catch (SocketIOException e)
                    {
                        e.printStackTrace();
                    }

                    return "OK"; //this object will be sent back to the client in ACK packet
                }
            });

            socket.on(FORCE_DISCONNECT, new EventListener()
            {
                @Override
                public Object onEvent(String name, Object[] args, boolean ackRequested)
                {
                    socket.disconnect(false);
                    return null;
                }
            });

            socket.on(CLIENT_BINARY, new EventListener()
            {
                @Override
                public Object onEvent(String name, Object[] args, boolean ackRequested)
                {
                    Map map = (Map<Object, Object>)args[0];
                    InputStream is = (InputStream) map.get("buffer");
                    ByteArrayOutputStream os = new ByteArrayOutputStream();
                    try
                    {
                        ByteStreams.copy(is, os);
                        byte []array = os.toByteArray();
                        String s = "[";
                        for (byte b : array)
                            s += " " + b;
                        s += " ]";
                        System.out.println("Binary received: " + s);
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }

                    return "OK";
                }
            });

            socket.on(SERVER_BINARY, new EventListener()
            {
                @Override
                public Object onEvent(String name, Object[] args, boolean ackRequested)
                {
                    try
                    {
                        socket.emit(SERVER_BINARY,
                                new ByteArrayInputStream(new byte[] {1, 2, 3, 4}),
                                new ACKListener()
                                {
                                    @Override
                                    public void onACK(Object[] args)
                                    {
                                        System.out.println("ACK received: " + args[0]);
                                    }
                                });
                    }
                    catch (SocketIOException e)
                    {
                        socket.disconnect(true);
                    }

                    return null;
                }
            });
        }
    });
}

}`

Here is my web.xml:

`

<servlet-name>Test</servlet-name>
<servlet-class>test.Test</servlet-class>
<servlet-name>Test</servlet-name>
<url-pattern>/socket.io/*</url-pattern>

`

When I start up the Tomcat :

javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailable
at org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer.onStartup(WebSocketServerContainerInitializer.java:146)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5580)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

....I hava no idea why , Anyone knows?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions