donaldp 02/03/28 19:10:03 Modified: proposal/myrmidon/src/xdocs classloader.xml Log: Restyle doc Revision Changes Path 1.2 +130 -107 jakarta-ant/proposal/myrmidon/src/xdocs/classloader.xml Index: classloader.xml =================================================================== RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/xdocs/classloader.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- classloader.xml 2 Mar 2002 00:55:31 -0000 1.1 +++ classloader.xml 29 Mar 2002 03:10:03 -0000 1.2 @@ -1,113 +1,136 @@ <?xml version="1.0"?> <document> - <properties> - <title>On ClassLoaders in Ant2</title> - <author email="[EMAIL PROTECTED]">Peter Donald</author> - </properties> - -<body> - -<section name="ClassLoader Management"> - -<p>In many ways Ant2 needs to follow rules similar to a number of -different application servers with respect to ClassLoader management. -Ant2 will create a number of different ClassLoaders that have access -to different sets of resources (and thus Classes). The main reason -for this arrangment is to partition different sections of the -application such as the Container, the Task API, task/type libraries -and support libraries.</p> - -<p>The recomended structure for ClassLoader relationships is a hierarchy. -When a ClassLoader is asked for a resource (or a class) it first delegates -to it's parent to ask for the resource. If the resource is not present in -its parent ClassLoader then the ClassLoader attempts to locate the resource -in it's own store. In practice this means that all the classes (and static -variables defined by said classes) in a parent ClassLoader are shared with -the child ClassLoaders.</p> - -<p>Using kooky ascii art, the specific ClassLoader structure for Ant2 is as -follows:</p> - -<source> - Bootstrap - | - System - | - Common - / \ - Container Shared - / \ - Antlib1 Antlib2 ... -</source> - -<ul> - <li> - The <strong>Bootstrap</strong> ClassLoader contains the classes and resources - provided by the Java runtime. - </li> - <li> - The <strong>System</strong> ClassLoader contains the classes that were made accessible - via the CLASSPATH environment variable. If the standard ant script was used then this - should only contain the classes that are used to bootstrap the ant runtime. ie - <code>$ANT_HOME/bin/ant-launcher.jar</code> - </li> - <li> - The <strong>Common</strong> ClassLoader contains the classes and resources - that are made visible to both the Container and to all the ant type librarys. This - contains all the classes that the Container uses to communicate with tasks and other - supporting infrastructure. In particular it contains the following APIs; - <ul> - <li> - <em>Task API</em> - Contains the classes that are part of the API used - to define tasks. - </li> - <li> - <em>ProjectListener API</em> - Contains the classes necessary to define new - ProjectListeners. - </li> - <li> - <em>Aspect API</em> - Contains the classes that are used to define Aspects - of the container. - </li> - <li> - <em>Container API</em> - Contains the interfaces that are required to communicate - with the objects deep within the container. <strong>NOTE</strong>: These interfaces - are not to be used by user tasks but are made available so that certain tasks (such - as <antcall/>) can be implemented. However they are subject to change without - notice between between different ant2 versions. - </li> - </ul> - <p> - These classes are loaded from all the jars present in the <code>$ANT_HOME/lib</code> - directory. - </p> - </li> - <li> - The <strong>Container</strong> ClassLoader contains all the classes and resources - that are part of the actual implementation of the Container. These classes are not - directly accessible to any Ant library or task. Some of the classes are indirectly - accessible to tasks and other elements defined in the ant librarys as they implement - interfaces defined in the <strong>Common</strong> ClassLoader. The classes that are - stored in jars in the <code>$ANT_HOME/bin/lib/</code> directory. - </li> - <li> - The <strong>Shared</strong> ClassLoader contains all the classes and resources - that are shared across all of the ant librarys (unless they are als needed by the - container in which case they should be placed int the <strong>Container</strong> - ClassLoader). This ClassLoader is populated by all the jars that are contained in - the <code>$ANT_HOME/shared/</code> directory. - </li> - <li> - The <strong>AntLib</strong> ClassLoaders each contain the classes and resources - that required by that particular library. Note that in some cases a single Ant - Library will manifest as a single ClassLoader containing a single jar. However - in some cases it is possible for one Ant Library to have multiple jars in its - ClassLoader or even have multiple ClassLoaders. See XXXX for further details. - </li> -</ul> + <properties> + <title>On ClassLoaders in Ant2</title> + <author email="[EMAIL PROTECTED]">Peter Donald</author> + </properties> + + <body> + + <section name="ClassLoader Management"> + + <p>In many ways Ant2 needs to follow rules similar to a number of + different application servers with respect to ClassLoader management. + Ant2 will create a number of different ClassLoaders that have access + to different sets of resources (and thus Classes). The main reason + for this arrangment is to partition different sections of the + application such as the Container, the Task API, task/type libraries + and support libraries.</p> + + <p>The recomended structure for ClassLoader relationships is a hierarchy. + When a ClassLoader is asked for a resource (or a class) it first delegates + to it's parent to ask for the resource. If the resource is not present in + its parent ClassLoader then the ClassLoader attempts to locate the resource + in it's own store. In practice this means that all the classes (and static + variables defined by said classes) in a parent ClassLoader are shared with + the child ClassLoaders.</p> + + <p>Using kooky ascii art, the specific ClassLoader structure for Ant2 is as + follows:</p> + + <source> + Bootstrap + | + System + | + Common + / \ + Container Shared + / \ + Antlib1 Antlib2 ... + </source> + + <ul> + <li> + The + <strong>Bootstrap</strong> ClassLoader contains the classes and resources + provided by the Java runtime. + + </li> + <li> + The + <strong>System</strong> ClassLoader contains the classes that were made accessible + via the CLASSPATH environment variable. If the standard ant script was used then this + should only contain the classes that are used to bootstrap the ant runtime. ie + + <code>$ANT_HOME/bin/ant-launcher.jar</code> + </li> + <li> + The + <strong>Common</strong> ClassLoader contains the classes and resources + that are made visible to both the Container and to all the ant type librarys. This + contains all the classes that the Container uses to communicate with tasks and other + supporting infrastructure. In particular it contains the following APIs; + + <ul> + <li> + <em>Task API</em> - Contains the classes that are part of the API used + to define tasks. + + </li> + <li> + <em>ProjectListener API</em> - Contains the classes necessary to define new + ProjectListeners. + + </li> + <li> + <em>Aspect API</em> - Contains the classes that are used to define Aspects + of the container. + + </li> + <li> + <em>Container API</em> - Contains the interfaces that are required to communicate + with the objects deep within the container. + <strong>NOTE</strong>: These interfaces + are not to be used by user tasks but are made available so that certain tasks (such + as <antcall/>) can be implemented. However they are subject to change without + notice between between different ant2 versions. + + </li> + </ul> + <p> + These classes are loaded from all the jars present in the + <code>$ANT_HOME/lib</code> + directory. + + </p> + </li> + <li> + The + <strong>Container</strong> ClassLoader contains all the classes and resources + that are part of the actual implementation of the Container. These classes are not + directly accessible to any Ant library or task. Some of the classes are indirectly + accessible to tasks and other elements defined in the ant librarys as they implement + interfaces defined in the + <strong>Common</strong> ClassLoader. The classes that are + stored in jars in the + <code>$ANT_HOME/bin/lib/</code> directory. + + </li> + <li> + The + <strong>Shared</strong> ClassLoader contains all the classes and resources + that are shared across all of the ant librarys (unless they are als needed by the + container in which case they should be placed int the + <strong>Container</strong> + ClassLoader). This ClassLoader is populated by all the jars that are contained in + the + <code>$ANT_HOME/shared/</code> directory. + + </li> + <li> + The + <strong>AntLib</strong> ClassLoaders each contain the classes and resources + that required by that particular library. Note that in some cases a single Ant + Library will manifest as a single ClassLoader containing a single jar. However + in some cases it is possible for one Ant Library to have multiple jars in its + ClassLoader or even have multiple ClassLoaders. See XXXX for further details. -</section> + </li> + </ul> -</body> + </section> + + </body> </document>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
