Aries JMX Specification Implementation
Copyright 2009 The Apache Aries development community

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product includes software developed at
the OSGi Alliance (http://www.osgi.org/).

