Vibe has been renamed to Cettia and is no longer maintained! Use Cettia. ×
flowersinthesand wrote Vibe 3.0.0-Alpha12 released on February 5, 2015.

Vibe Java Server A is a simple B, scalable C Java server designed to run any framework or platform on Java Virtual Machine D.

A
Vibe 3.0.0-Alpha3 server.
B
All interface you need to know is Server and ServerSocket. Indeed.
C
Shared nothing architecture is adopted to help scale application horizontally with ease.
D
Because it is built on Vibe Java Platform which is I/O abstraction layer, you can run your application on any platform that it supports seamlessly e.g. Play, Vert.x, Atmosphere and Servlet.

Quick Start

Vibe Java Server is distributed through Maven Central. A single artifact, org.atmosphere:vibe-server:3.0.0-Alpha3, is enough for general purpose and thanks to Vibe Java Platform, your application can run on any framework or platform it supports.

<dependencies>
    <dependency>
        <groupId>org.atmosphere</groupId>
        <artifactId>vibe-server</artifactId>
        <version>3.0.0-Alpha3</version>
    </dependency>
    <dependency>
        <groupId>org.atmosphere</groupId>
        <artifactId>vibe-platform-server-atmosphere2</artifactId>
        <version>3.0.0-Alpha2</version>
    </dependency>
</dependencies>

Once you've set up the build, you will be able to write the following echo and chat server that can run on Servlet containers Atmosphere 2 supports i.e. Tomcat, Jetty and so on.

import org.atmosphere.vibe.platform.Action;
import org.atmosphere.vibe.platform.server.atmosphere2.AtmosphereBridge;
import org.atmosphere.vibe.server.*;

import javax.servlet.*;
import javax.servlet.annotation.WebListener;

@WebListener
public class Bootstrap implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent event) {
        Server server = new DefaultServer();
        server.socketAction(new Action<ServerSocket>() {
            @Override
            public void on(final ServerSocket socket) {
                socket.closeAction(new VoidAction() {
                    @Override
                    public void on() {
                        System.out.println("on close event");
                    }
                });
                socket.errorAction(new Action<Throwable>() {
                    @Override
                    public void on(Throwable error) {
                        System.out.println("on error event");
                        error.printStackTrace();
                    }
                });
                socket.on("echo", new Action<Object>() {
                    @Override
                    public void on(Object data) {
                        socket.send("echo", data);
                    }
                });
                socket.on("chat", new Action<Object>() {
                    @Override
                    public void on(Object data) {
                        server.all().send("chat", data);
                    }
                });
            }
        });

        ServletContext servletContext = event.getServletContext();
        new AtmosphereBridge(servletContext, "/vibe").httpAction(server.httpAction()).websocketAction(server.websocketAction());
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {}
}

Further Reading