The CloEJB project seeks to simplify integration of EJB technology with the
Clojure programming language. Using Java from within Clojure is easy, and (as
of version 1.0) Clojure only provides the gen-interface
and gen-class
macros so that Java can use Clojure. However, there is at least one major
deficiency of these macros: no support for Java annotations. As a result, in
order to use Clojure from an EJB container, you must rely on XML deployment
descriptors.
In order to use CloEJB, you only need Clojure 1.0.0. Of course, to run any code generated by CloEJB requires a Java EE platform that supports EJB 3.0.
The following packages are required to build, document, and test CloEJB:
- Apache Ant 1.7.0 or above
- Clojure 1.0.0
- Java EE 5 API JAR
- Clojure-contrib (Clojure 1.0 compatible), needed for documentation and unit testing
The following is a rough outline of the development that is proposed for CloEJB. It is subject to change, especially as a result of user demand.
- Provide rudimentary support for stateless session beans by implementing the
following annotations:
- @Local
- @Remote
- @Stateless
- Provide rudimentary support for stateful session beans by implementing the
following annotations:
- @Stateful
- @Remove
- Support property-based dependency injection using the following annotations:
- @EJB
- @Resource
- @Resources
- Add support for message-driven beans by adding the support for the @MessageDriven annotation.
- Add support for the basic life cycle callbacks using the following
annotations:
- @PostConstruct
- @PreDestroy
- Add support for stateful session bean callbacks using the following
annotations:
- @PostActivate
- @PrePassivate
- Add support for transaction management annotations.
- Add support for security annotations.
- Add support for interceptors.
- Add support for life cycle listeners.
- Add support for EJB-driven web services
There will be a few limitations of the CloEJB system. At this time, the following limitations are anticipated:
- No field-based dependency injection, due to limitations within Clojure.
- No planned support for EJB technology prior to version 3.0.
This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://opensource.org/licenses/eclipse-1.0.php.
By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software.