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-Alpha1 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-Alpha1
, 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-Alpha1</version>
</dependency>
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>vibe-platform-server-atmosphere2</artifactId>
<version>3.0.0-Alpha1</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.on("close", new VoidAction() {
@Override
public void on() {
System.out.println(socket.id() + " has been closed");
}
});
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
- To get started with JavaScript Client, read the tutorial, writing chat application.
- To play something right now, start with archetype example on your favorite platform.
- To take a brief look at API, check out the testee.
- To get details of API, see API document.
- To have a thorough knowledge of the implementation, read out the reference.