WARNING: Cassandra's internal APIs should be considered highly volatile, even after a 1.0 release.
You can run a Cassandra node internal to your own JVM-based code easily. Here's what CassandraDaemon does:
// initialize keyspaces
for (String table : Table.getAllTableNames())
{
if (logger.isDebugEnabled())
logger.debug("opening keyspace " + table);
Table tbl = Table.open(table);
tbl.onStart();
}
// replay the log if necessary
RecoveryManager.doRecovery();
// start server internals
StorageService.instance().initServer();Then you can use the internal StorageProxy API without going through Thrift.
A higher level embedded cassandra service is described here http://prettyprint.me/2010/02/14/running-cassandra-as-an-embedded-service/ and committed to trunk of v6