save and load of sessions are working in the basic sense, and LastAccessTime test is passing as well.A
diff --git a/jetty-ehcache-sessions/src/main/java/org/eclipse/jetty/nosql/ehcache/JsonSession.java b/jetty-ehcache-sessions/src/main/java/org/eclipse/jetty/nosql/ehcache/JsonSession.java
new file mode 100644
index 0000000..833650c
--- /dev/null
+++ b/jetty-ehcache-sessions/src/main/java/org/eclipse/jetty/nosql/ehcache/JsonSession.java
@@ -0,0 +1,151 @@
+package org.eclipse.jetty.nosql.ehcache;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.jetty.nosql.NoSqlSession;
+import org.eclipse.jetty.util.ajax.JSON;
+import org.eclipse.jetty.util.ajax.JSON.Output;
+import org.eclipse.jetty.util.ajax.JSONPojoConvertor.Setter;
+
+public class JsonSession implements JSON.Convertible
+{
+    public String clusterId;
+    public String nodeId;
+    public Long creationTime;
+    public Long accessed;
+    public Integer requests;
+    public Integer attributes;
+    public Object version = new Integer(0);
+    public Map<String, Object> attrs = new HashMap<String,Object>();
+
+    public JsonSession()
+    {
+        
+    }
+    
+    public JsonSession(NoSqlSession session)
+    {
+        clusterId = session.getClusterId();
+        nodeId = session.getNodeId();
+        creationTime = session.getCreationTime();
+        accessed = session.getAccessed();
+        requests = session.getRequests();
+        attributes = session.getAttributes();
+        if ( session.getVersion() != null )
+        {
+            version = session.getVersion();
+        }
+        
+        Enumeration<String> e = session.getAttributeNames();
+        while (e.hasMoreElements())
+        {
+            String key = e.nextElement();
+            attrs.put(key,session.getAttribute(key));
+        }
+    }
+
+    public String getClusterId()
+    {
+        return clusterId;
+    }
+
+    public void setClusterId(String clusterId)
+    {
+        this.clusterId = clusterId;
+    }
+
+    public String getNodeId()
+    {
+        return nodeId;
+    }
+
+    public void setNodeId(String nodeId)
+    {
+        this.nodeId = nodeId;
+    }
+
+    public Long getCreationTime()
+    {
+        return creationTime;
+    }
+
+    public void setCreationTime(Long creationTime)
+    {
+        this.creationTime = creationTime;
+    }
+
+    public Long getAccessed()
+    {
+        return accessed;
+    }
+
+    public void setAccessed(Long accessed)
+    {
+        this.accessed = accessed;
+    }
+
+    public Integer getRequests()
+    {
+        return requests;
+    }
+
+    public void setRequests(Integer requests)
+    {
+        this.requests = requests;
+    }
+
+    public Integer getAttributes()
+    {
+        return attributes;
+    }
+
+    public void setAttributes(Integer attributes)
+    {
+        this.attributes = attributes;
+    }
+
+    public Object getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion(Object version)
+    {
+        this.version = version;
+    }
+    
+    public Map<String,Object> getAttrs()
+    {
+        return attrs;
+    }
+    
+    @Override
+    public void toJSON(Output out)
+    {
+        out.add("version", (Integer)getVersion() );
+        out.add("clusterId", getClusterId() );
+        out.add("creationTime", getCreationTime());
+        out.add("accessed", getAccessed());
+        out.add("requests", getRequests());
+        out.add("attributes", getAttributes());
+        
+        out.add("attrs", attrs);
+        
+    }
+
+    @Override
+    public void fromJSON(Map object)
+    {
+        setRequests(Integer.valueOf("" + object.get("requests")));
+        setVersion(object.get("version"));
+        setAccessed((Long)object.get("accessed"));
+        setCreationTime((Long)object.get("creationTime"));
+        setAttributes(Integer.valueOf("" + object.get("attributes")));
+        
+        attrs = (HashMap<String,Object>)object.get("attrs");
+    }
+    
+}
\ No newline at end of file
diff --git a/jetty-ehcache-sessions/src/test/java/org/eclipse/jetty/nosql/ehcache/LastAccessTimeTest.java b/jetty-ehcache-sessions/src/test/java/org/eclipse/jetty/nosql/ehcache/LastAccessTimeTest.java
new file mode 100644
index 0000000..a08d4dd
--- /dev/null
+++ b/jetty-ehcache-sessions/src/test/java/org/eclipse/jetty/nosql/ehcache/LastAccessTimeTest.java
@@ -0,0 +1,15 @@
+package org.eclipse.jetty.nosql.ehcache;
+
+import org.eclipse.jetty.server.session.AbstractLastAccessTimeTest;
+import org.eclipse.jetty.server.session.AbstractTestServer;
+
+public class LastAccessTimeTest extends AbstractLastAccessTimeTest
+{
+
+    @Override
+    public AbstractTestServer createServer(int port, int max, int scavenge)
+    {
+        return new TestServer(0);
+    }
+
+}
diff --git a/jetty-ehcache-sessions/src/test/java/org/eclipse/jetty/nosql/ehcache/NewSessionTest.java b/jetty-ehcache-sessions/src/test/java/org/eclipse/jetty/nosql/ehcache/NewSessionTest.java
new file mode 100644
index 0000000..2d8c5c8
--- /dev/null
+++ b/jetty-ehcache-sessions/src/test/java/org/eclipse/jetty/nosql/ehcache/NewSessionTest.java
@@ -0,0 +1,15 @@
+package org.eclipse.jetty.nosql.ehcache;
+
+import org.eclipse.jetty.server.session.AbstractNewSessionTest;
+import org.eclipse.jetty.server.session.AbstractTestServer;
+
+public class NewSessionTest extends AbstractNewSessionTest
+{
+
+    @Override
+    public AbstractTestServer createServer(int port, int max, int scavenge)
+    {
+        return new TestServer(0);
+    }
+
+}