Carbon AS Community Edition is a JMX compliant Open Source J2EE Application Server project initiated by Aquosine (http://www.aquosine.com
). Carbon AS Community Edition is released under LGPL and is free to use, modify and distribute. Aquosine is an open standards based initative to foster open source growth.
Carbon kernel is basically an IoC container that starts, stops (manages lifecycle) and injects dependencies among services. All services are required to implement CarbonBean interface in order to receive lifecycle callbacks. The server components and the server itself are managed through JMX.
The server will boot up by reading carbon-config.xml file which contains the required server configuration
information and starts the JMX server which will inturn start the carbon IoC container/kernel. IoC container and JMX Server will read the carbon-profile.xml file which contains CarbonBean and MBean configurations, to start the services and register them in the Service regsitry and JMX registry respectively. Immediately after launching these services (or any other service) kernel generates all
their dependencies and injects them (don't forget that kernel really injects proxies at that point to referenced services). The ASM (http://asm.objectweb.org
/) based interceptors will be used to implement the proxies. The interceptor layer will act as the kernel bus which will handle events, security, logging, clustering services.
Kernel needs to know what methods are publicly exposed by services. Proxies only implement these services. So services will have to manifest this behavior explicitly. This meta information will be written in xml, annotations (Java 5+) or statically. Also an initial state will be defined here. Services will be able to communicate with each other(instances) because they contain a kernel context instance (injected when service started).
The architecture design v 0.1 and v 0.2 can be found at the following links:
-To implement custom micro IOC Container.
-JAAS/JAAC based security