Dashboard > Terracotta Public Wiki > Home > Terracotta Project Ideas
  Terracotta Public Wiki Log In   View a printable version of the current page.  
  Terracotta Project Ideas
Added by Orion Letizi, last edited by Taylor Gautier on Nov 23, 2008  (view change)
Labels: 
(None)

Terracotta Project Ideas

This is a list of ideas for Terracotta-related projects. Please feel free to add to or edit this page. If you want to work on a particular idea, send mail to tc-dev@lists.terracotta.org.

If you want to start experimenting with some of this stuff, feel free to use the Terracotta Forge Labs infrastructure. This is a good way to get started on the path to being a Terracotta contributor.

Patterns

ClusterResourceMap

Any resource added to the map will associate the node id of the adding cluster node. Every instance of the map must be "started" which starts a thread that waits for JMX events that indicate a node has left the cluster. When the node leaves the cluster, the response from other JVMs is to "clean" the clusterresourcemap by removing all elements that were added by the node that just left the cluster.

Here's a sketch of the interface:

public class ClusterResourceMap<V>
{
    public interface ResourceDeletedCallback<V> 
    {
        public void resourceDeleted(V resource);
    }
    
    public void registerResource(V resource, ResourceDeletedCallback<V> callback) 
    { 
        
    }
    
    public void start() 
    {
        
    }
}

Mailbox

Pass a callback method to a "Mailbox" class. The mailbox should support p2p drops and broadcast drops of messages. Basically the mailbox class would put a new queue into a ClusterResourceMap and start listening for receipt of messages. when the message is received, it calls back the callback.

outstanding issue is: how would two endpoints communicate with one another for a p2p style pattern? Broadcast is easy - you just have Mailbox.broadcast(msg) api.

Messaging

Build a messaging bus that uses Terracotta as a transport layer.

Eventing

Listeners

Frameworks

JCS

As Of: 09/20/08
Status: first pass. sample app puts an item into the cache, restart the jvm, pull it out.
Contributors: Taylor Gautier
Project Page: labs:JCS

JSF

Struts2 (a.k.a. Webworks)

Develop a configuration module that encapsulates the roots, locks, and include config for Struts 2.x

Cached Portal

Jofti

Lift

Lift is a web framework built on Scala

MyFaces

Echo

Tapestry

Google-Guice

JCR

SOLR

Database

Cluster-aware JDBC Pool

This is from a suggestion by Fernando Padilla. While Terracotta wouldn't be useful to cluster the actual database resources, it would be very easy to keep track of cluster-wide info about the cross-cluster usage of database resources. As Fernando suggests, Terracotta would be very useful for handling "the management of connection pools, load-balancing the size of each pool per server", etc. This is a pattern of use where Terracotta can easily keep track of metadata about the resources used across an entire cluster.

HsqlDB

H2 Database

Derby

prevayler

Non-Java Languages

Groovy

Grails

JRuby

PHP

This is based on Geert Bevin's work clustering Drupal: http://rifers.org/blogs/gbevin/2007/8/1/clustered_drupal_terracotta

Scala

http://www.scala-lang.org/

Containers/Products

Glassfish

IntelliJ Plugin

As Jim Bethancourt suggests, perhaps this could be done as an entry to the IntelliJ plugin contest.

Mule

Resin

Misc.

Web-based Terracotta administration console

Method Memoization with TC

Tek271 Memoizer is a Java method memoizer. (Memoize= Cache the result of method call for later use instead of recalculateing). Consider using TC as the caching mechanizm.

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.5 Build:#811 Jul 25, 2007) - Bug/feature request - Contact Administrators