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.
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.