CapeDwarf: Running Google App Engine apps in JBossAS7
Deploy and run your Java App Engine applications on your own private JBoss Application Server (AS7) cluster or on RedHat’s OpenShift cloud.
JBoss CapeDwarf is an implementation of the Google App Engine API, which allows applications to be deployed on JBoss Application Servers without modification. Behind the scenes, CapeDwarf uses existing JBoss APIs such as Infinispan, JGroups, PicketLink, HornetQ and others.
The ultimate goal of the CapeDwarf project is to fully implement all the APIs of the Google App Engine.
CapeDwarf’s implementation currently only supports signing requests for external non-Google systems.
The Blobstore API uses GAE’s Files API. CapeDwarf’s implementation of the Files API is implemented on top of Infinispan’s GridFileSystem, which is an API that exposes an Infinispan-backed data grid as a file system.
CapeDwarf currently contains only an initial implementation of the Channel API.
CapeDwarf’s implementation of the Datastore API is based on Infinispan. Infinispan is an extremely scalable, highly available data grid platform - 100% open source, and written in Java. Querying is implemented through Infinispan’s Query module, which adds querying capabilities to Infinispan. It uses Hibernate Search and Lucene to index objects as they are stored in the cache.
CapeDwarf implements the Files API through Infinispan's GridFileSystem, which is an API that exposes an Infinispan-backed data grid as a file system.
CapeDwarf currently performs all the image manipulations through Java’s java.awt.image classes. All the image operations are implemented, except the “I’m feeling lucky” operation, which is currently simply a NoOp.
CapeDwarf currently stores all log lines as entities in the Datastore. This will be changed soon.The log lines will be stored in a persistent Infinispan cache directly instead of through the Datastore API.
CapeDwarf’s Memcache API implementation uses Infinispan as the cache.
CapeDwarf’s implementation of the OAuth API is currently not available yet, but is a work in progress.
CapeDwarf's implementation of the Prospective Search API is based on Infinispan and Lucene's MemoryIndex.
CapeDwarf's implementation of the Search API is based on Infinispan and Hibernate-Search.
For push queues CapeDwarf uses JMS. For pull queues queues CapeDwarf uses Infinispan with a custom purge mechanism..
CapeDwarf’s implementation of the URL Fetch API uses the Apache HttpComponents HttpClient to perform requests.
Currently, administrators are defined through a special file called capedwarf-web.xml.
CapeDwarf’s implementation of the XMPP API is currently only able to send XMPP messages, but not receive them. The support for receiving XMPP messages is planned for the future.
Java Persistence API (JPA) is a standard interface for storing objects containing data into a relational database. The standard defines interfaces for annotating Java objects, retrieving objects using queries, and interacting with a database using transactions. An application that uses the JPA interface can work with different databases without using any vendor-specific database code. JPA simplifies porting your application between different database vendors.