I wanted to use relational and object oriented techniques to manage content which I found impossible with the XML-File storage backend.
What does it require?
Lenya has to be run inside the JBoss application server to use the EJB Repository.
What does it do?
It is a reimplementation of several Lenya interfaces including:
How does it work?
The EJB code and the Lenya code run in seperate areas of JBoss, these two areas need to share a common jar of interfaces to speak to each other. To do this I made a 'common' directory under 'src' and moved interfaces from src/java and other places into the common directory.
The second directory I made was src/ejb, this holds all the Entity Beans, Stateful and Stateless beans.
I also made two lenya modules, one for the new AC backend, and the other for the content repository. These are modules/ejbac and modules/ejbsource
The new implementations contained in ejbac and ejbsource look up a stateless session bean which queries the database for the required entity bean and returns it. From there it's compatible with lenya's normal repository. (There are some exceptions to this, eg RevisionControl is done differently, I'll write more on that later).
My main repository node is a 'ContentNode' which has a 1-1 relationship with an EjbContent. At the moment there is only a simple 'BlobContent' which stored a byte in the database, basically like a file. You can implement an EjbContent in any way you like as long as it can generate XML. There is also alot of useful helpers in AbstractContent, eg it allows you to embed content from other nodes.
How do I get it?
I'm adding patches and zips to bugzilla, see: