Skip to content

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

@2efPer

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?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions