diff --git a/lib/java/src/server/TServer.java b/lib/java/src/server/TServer.java
new file mode 100644
index 0000000..38ef81f
--- /dev/null
+++ b/lib/java/src/server/TServer.java
@@ -0,0 +1,38 @@
+package com.facebook.thrift.server;
+
+import com.facebook.thrift.TProcessor;
+
+/**
+ * Generic interface for a Thrift server.
+ *
+ * @author Mark Slee <mcslee@facebook.com>
+ */
+public abstract class TServer {
+
+  /**
+   * The options class should be subclassed by particular servers which have
+   * specific options needs, while the general options should live here.
+   */
+  public static class Options {
+    public Options() {}
+  }
+
+  /** Core processor */
+  protected TProcessor processor_;
+
+  /** Server options */
+  protected Options options_;
+
+  /**
+   * Default constructor, all servers take a processor and some options.
+   */
+  protected TServer(TProcessor processor, Options options) {
+    processor_ = processor;
+    options_ = options;
+  }
+  
+  /**
+   * The run method fires up the server and gets things going.
+   */
+  public abstract void run();
+}
diff --git a/lib/java/src/server/TSimpleServer.java b/lib/java/src/server/TSimpleServer.java
new file mode 100644
index 0000000..352a6de
--- /dev/null
+++ b/lib/java/src/server/TSimpleServer.java
@@ -0,0 +1,50 @@
+package com.facebook.thrift.server;
+
+import com.facebook.thrift.TException;
+import com.facebook.thrift.TProcessor;
+import com.facebook.thrift.transport.TServerTransport;
+import com.facebook.thrift.transport.TTransport;
+import com.facebook.thrift.transport.TTransportException;
+
+/**
+ * Simple singlethreaded server for testing.
+ *
+ * @author Mark Slee <mcslee@facebook.com>
+ */
+public class TSimpleServer extends TServer {
+
+  private TServerTransport serverTransport_;
+
+  public TSimpleServer(TProcessor processor,
+                       TServer.Options options,
+                       TServerTransport serverTransport) {
+    super(processor, options);
+    serverTransport_ = serverTransport;
+  }
+
+  public void run() {
+    try {
+      serverTransport_.listen();
+    } catch (TTransportException ttx) {
+      ttx.printStackTrace();
+      return;
+    }
+
+    while (true) {
+      TTransport client = null;
+      try {
+        client = serverTransport_.accept();
+        if (client != null) {
+          while (processor_.process(client, client));
+        }
+      } catch (TException tx) {
+        tx.printStackTrace();
+      }
+
+      if (client != null) {
+        client.close();
+        client = null;
+      }
+    }
+  }
+}
