Peapod is a lightweight container. There are a number of such projects and products out in the wild, and "container" has been applied to a wide range of offerings. Simply put, Peapod lets you take a plain Java class, an interface and a small fragment of XML metadata and hand off responsibility to a host. The combination of an interface, and implementing class and the metadata is a component; the host is Peapod. The responsibilities the host can take over are many. Here are some that Peapod handles:
-
hot-deploy and undeploy of JARs: just drop in a directory or remove a file to install or uninstall a component
-
intelligent dependency management: components are active only when all their declared dependencies have been satisfied--remove a component and all its dependents gracefully shut down; re-add it and they wake up
-
code versioning: declare you require version 1.0 and seamlessly receive a access to facilities provided by a 1.1 implementation--you can even have both versions running in the same container
-
combining the above three you get hot upgrades: undeploy a component, thus putting the dependents to sleep, deploy a newer version and not have to restart at all, enabling very high uptimes with a single lightweight server
[ read more ]