...
Service | Description | All Containers | Lightweight Containers |
---|---|---|---|
Lifecycle management | Control lifecycle of application objects running within it (for example, clean initialization, startup and shutdown). |
| |
Lookup | Obtain references to managed objects; create objects/services on demand. |
| |
Configuration | Externalize configuration from code into simple configuration files. |
| |
Dependency resolution | Manage relationships among managed objects (for example, configuring beans by calling setters, or automatically calling constructors with managed beans). |
| |
Transaction management | Externalize transaction management from code into configuration files (i.e. declarative transactions). |
| |
Object pooling | The obvious example are database connections. |
| |
Expose remote services | Not just SOAP based web services; there are other, simpler wire protocols. |
| |
Consume remote services | Provide transparent access to remote objects running outside the container. |
| |
Non-invasive | Run existing legacy code as-is in the container. Code should run the same both inside and outside the container. | ||
Quick start-up |
| ||
No special deployment requirements | Developers should be able to write pure Java code without knowing anything about the container | ||
Run in variety of environments | Have a small footprint and minimal API to allow use in everything from standalone desktop applications, to web-only containers (like Tomcat), to full-blown J2EE Application Servers. | ||
Provide crosscutting customization and extensibility | For example, inject security checks, logging, or profiling into objects without them being aware. |
...