User: user57  
  Date: 01/11/19 15:00:23

  Added:       src/docs/developers/guide buildsystem-faq.jsp
                        buildsystem.jsp codestyle.jsp index.jsp logging.jsp
                        quickstart.jsp
  Log:
   o found out there was a developers/main.css, copied the styles over
     from /main.css (with the appropriate color changes)
   o moved buildsystem* and quickstart guides to /developers/guide
   o added logging system guide (based on the recent emails from scott)
   o moved the guidelines.jsp to guide/codestyle.jsp
   o changed navigation pages to use a New suffix (in superscript) for
     items marked as new.
   o changed CVS to Source Code on develoeprs nav include
   o added guides link to resources section
   o moved SF Project info to Resources section "@SourceForge"
   * leaving quick start under source code to help new users find it faster
  
  Revision  Changes    Path
  1.1                  newsite/src/docs/developers/guide/buildsystem-faq.jsp
  
  Index: buildsystem-faq.jsp
  ===================================================================
  <jsp:include page="/developers/head.jsp" flush="true"/>
  <!-- $Id: buildsystem-faq.jsp,v 1.1 2001/11/19 23:00:23 user57 Exp $ -->
  <jsp:include page="/developers/slogan.jsp" flush="true">
     <jsp:param name="SLOGAN" value="BUILD SYSTEM FAQ"/>
  </jsp:include>
  
  <!-- ==================================================================== -->
  
  <!-- Preface -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     Find the answers to the most frequently asked questions about the
     build system here.
  
  <!-- end picateam block --></td></tr></table>
  
  <!-- ==================================================================== -->
  
  <p class="head"><a name="Contents">Contents</a>
  
  <p class="text">
     <ul class="text">
       <li><a href="#Ant_directly">Why can't I use <tt>ant</tt> directly?</a>
     </ul>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Ant_directly">Why can't I use <tt>ant</tt> directly?<a/>
  
  <p class="text">
     The JBoss build system is based on Ant, but requires a very specific
     environemnt to execute in.  To facilitate easy usage and minimize user
     problems we have choosen to provide a JBoss specific <tt>build.sh</tt>
     and <tt>build.bat</tt> which perform the proper environemnt setup for
     the build system to run smoothly.
  
  <p class="text">
     There are also number of support and tool libraries which are required
     for some of the optional ant tasks as well as other custom tasks which
     help the build system do it's job.  The correct versions of these 
     libraries are kept in the <tt>tools</tt> module from CVS and should be
     included as a sub-module of the project you have checked out.
  
  <p class="text">
     See the <a href="buildsystem.jsp">Build&nbsp;System&nbsp;Guide</a> 
     for more details.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <jsp:include page="/developers/navigation.jsp" flush="true"/>
  
  
  
  1.1                  newsite/src/docs/developers/guide/buildsystem.jsp
  
  Index: buildsystem.jsp
  ===================================================================
  <jsp:include page="/developers/head.jsp" flush="true"/>
  <!-- $Id: buildsystem.jsp,v 1.1 2001/11/19 23:00:23 user57 Exp $ -->
  <jsp:include page="/developers/slogan.jsp" flush="true">
     <jsp:param name="SLOGAN" value="BUILD SYSTEM GUIDE"/>
  </jsp:include>
  
  <!-- ==================================================================== -->
  
  <!-- Preface -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     This document is meant as a general guide to the JBoss build system.  If
     you are looking to get working with the sources right away you are better
     off looking at the <a href="quickstart.jsp">Quick&nbsp;Start&nbsp;Guide</a>.
  
  <p class="text">
     For a list of frequently asked questions (and their answers) check out
     the <a href="buildsystem-faq.jsp">Build&nbsp;System&nbsp;FAQ</a>.
  
  <!-- end picateam block --></td></tr></table>
  
  <!-- ==================================================================== -->
  
  <p class="head"><a name="Contents">Contents</a>
  
  <p class="text">
     <ul class="text">
       <li><a href="#Introduction">Introduction</a>
       <li><a href="#Project_Overview">Project Overview</a>
       <li><a href="#Module_Overview">Module Overview</a>
       <li><a href="#The_build_Module">The <em>build</em> Module</a>
     </ul>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Introduction">Introduction<a/>
  
  <p class="text"><a name="About_Ant"></a>
     The JBoss build system is based on 
     <a href="http://jakarta.apache.org/ant";>Ant</a> from our friends at the 
     <a href="http://jakarta.apache.org";>Apache Jakarta</a> project.
  
  <p class="text">
     What is Ant? Ant is a Java based build tool. In theory it is kind of like 
     make without makes wrinkles.
  
  <p class="text">
     Why? Why another build tool when there is already make, gnumake, nmake, 
     jam, and others? Because, they are limited to the OS, or at least the OS 
     type such as Unix, that you are working on. Makefiles are inherently evil 
     as well.
  
  <p class="text">
     Ant is different. Instead a model where it is extended with shell based 
     commands, it is extended using Java classes. Instead of writing shell 
     commands, the configuration files are XML based calling out a target tree 
     where various tasks get executed. Each task is run by an object which 
     implements a particular Task interface. Granted, this removes some of the 
     expressive power that is inherent by being able to construct a shell 
     command such as `find . -name foo -exec rm {}` but it gives you the ability
     to be cross platform. To work anywhere and everywhere. And hey, if you 
     really need to execute a shell command, Ant has an exec rule that allows
     different commands to be executed based on the OS that it is executing on.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Project_Overview">Project Overview<a/>
  
  <p class="text">
     Each project contains a set of modules.  Each project has at least a 
     <tt>build</tt>, <tt>tools</tt>, <tt>thirdparty</tt>, one or more 
     <em>local</em> modules and zero or more <em>external</em> modules.
  
  <p class="text">
     <tt>tools</tt> is a special module which contains the scripts and libraries 
     required by the build system to run correctly.  This inclues ant, 
     buildmagic and other required ant libs.  Its layout looks like this:
     <blockquote>
        <tt>bin/</tt><br>
        <tt>lib/</tt><br>
     </blockquote>
  
  <p class="text">
     This module is included in each project by the CVS module definition file 
     (<tt>CVSROOT/modules</tt>).  In most cases the tools module for each 
     project is simply included from the <tt>tools</tt> CVS module.
  
  <p class="text">
     Even though there is a <tt>tools/bin/</tt> directory, files in there are 
     not meant to be executed directly by the user.
  
  <p class="text">
     <tt>thirdparty</tt> is another special module, which is included from the 
     <tt>thirdparty</tt> CVS module.
  
  <p class="text">
     Some projects have selected a sub-set of directories to include from
     this module, but due to some issues with CVS, this does not work as
     desired when performing a CVS update.
  
  <p class="text">
     The structure is setup to split up each thirdparty library, program or 
     package by <tt><em>vendor-name</em>/<em>package-name</em>/*</tt>.
     Library files are forced into a <tt>lib/</tt> directory if the imported 
     version did not supply one.  This helps keep things consistent.
  
  <p class="text">
     For example, the JAXP v1.1 package from SUN would look like:
     <blockquote>
        <tt>sun/jaxp/</tt><br>
        <tt>sun/jaxp/LICENSE</tt><br>
        <tt>sun/jaxp/lib/</tt><br>
        <tt>sun/jaxp/lib/jaxp.jar</tt><br>
        <tt>sun/jaxp/lib/crimson.jar</tt><br>
        <tt>sun/jaxp/lib/xalan.jar</tt><br>
     </blockquote>
  
  <p class="text">
     With the current CVS organization local and external modules are equivilant.
     This is likly to change when the CVS repository is reorganized. The logical 
     difference is that external modules exist as the specific modules 
     of another project which are included as a dependency of a local module.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head"><a name="Module_Overview">Module Overview</a>
  
  <p class="text">
     The <tt>build</tt> and other project specific or external modules have the 
     same layout:
     <blockquote>
        <tt>build.sh</tt><br>
        <tt>build.bat</tt><br>
        <tt>build.xml</tt><br>
     </blockquote>
  
  <p class="text">
     Other files required by the build system are stored in the <tt>etc/</tt>
     directory.  Each can have an optional local properties example file:
     <blockquote>
        <tt>etc/local.properties-example</tt><br>
     </blockquote>
  
  <p class="text">
     Currently only the <tt>build</tt> modules have this, so that user local 
     configuration can be placed in one central location.
  
  <p class="text">
     Local and external modules are generally modules containing source files
     to compile, or simply source modules.  These modules have the following
     extra layout:
     <blockquote>
        <tt>src/</tt><br>
        <tt>src/main/</tt><br>
     </blockquote>
  
     <!-- 
        | need to provide a detailed list of the src/* directories   
        | and the types of files which should be contained under them
      -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     <tt>build.xml</tt> contains all of the build control elements.  It will 
     attempt to install a <tt>etc/local.properties-example</tt> file to 
     <tt>local.properties</tt> if one exists.  It will then include that file.
     This allows users to override or configure the build system to suite 
     there needs with out having to modify the main build file and 
     accidentially check in those changes which would affect all users.
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     Each module has the same basic <tt>build.xml</tt> format (even 
     <tt>build</tt> modules). Each has been seperated into major sections:
     <ul class="text">
        <li><tt>Initialization</tt>
        <li><tt>Configuration</tt>
        <li><tt>Compile</tt>
        <li><tt>Archives</tt>
        <li><tt>Documents</tt>
        <li><tt>Install</tt>
        <li><tt>Release</tt>
        <li><tt>Tests</tt>
        <li><tt>Cleaning</tt>
        <li><tt>Workspace</tt>
        <li><tt>Help</tt>
        <li><tt>Misc</tt>
        <li><em>Other project or module specific sections</em>
     </ul>
  
  <p class="text">
     The sections which you are more likly to change are <tt>Configuration</tt>,
     <tt>Compile</tt>, <tt>Archives</tt> & <tt>Install</tt>.
     <tt>Initialization</tt> and some parts of <tt>Configuration</tt> should 
     <b>NOT</b> be changed, or should be changed in <b>ALL</b> files to keep 
     things consistent.
  
  <p class="text">
     Configuration is split up into targets:
     <ul class="text">
        <li><tt>_configure</tt>
        <li><tt>_configure-tools</tt>
        <li><tt>_configure-libraries</tt>
        <li><tt>_configure-modules</tt>
        <li><tt>_configure-tasks</tt>
     </ul>
  
  <p class="text">
     Each target should setup the tasks properties and paths which are required 
     for the particular tool, library, module or task.  <tt>_configure</tt> 
     contains some module specific names and then calls the others.
  
  <p class="text">
     Each module must have the following targets:
     <ul class="text">
        <li><tt>all</tt>
        <li><tt>most</tt>
        <li><tt>main</tt>
        <li><tt>release</tt>
        <li><tt>tests</tt>
        <li><tt>clean</tt>
        <li><tt>clobber</tt>
     </ul>
  
  <p class="text">
     These targets are assumed to exist and are called by the 
     <tt>build</tt> module.
  
  <p class="text">
     Each module will attempt to include a <tt>../build/local.properties</tt> 
     and a <tt>./local.properties</tt>.  In most cases you will want to put 
     local config into <tt>../build/local.properties</tt> to avoid confusion.
  
  <p class="text">
     The module where a build is started from (using <tt>build.sh</tt> or 
     <tt>build.bat</tt>) will create a <tt>build.log</tt> file.  
     For <tt>build</tt> modules that call other modules, only once
     <tt>build/build.log</tt> will be created.
  
  <p class="text">
     Modules <tt>install</tt> files into a <tt><em>module-dir</em>/output/*</tt> 
     directory with the <tt>install</tt> target.
  
  <p class="text">
     Each module has a also has a <tt>release</tt> target which can generate a 
     release archive for each.  For the <tt>build</tt> module, this will 
     contain a release for the project.  In most cases individiual module 
     releases are not used.
  
  <p class="text">
     Each module also has <tt>release-zip</tt>, <tt>release-tar</tt>, 
     <tt>release-tgz</tt> and <tt>release-all</tt> targets, which build the 
     appropriate archive type based on the name.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="The_build_Module">The <tt>build</tt> Module</p></a>
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     The <tt>build</tt> module is responsible for executing the build systems 
     of other modules, then <em>pulling</em> the output from those modules to 
     create a release distribution for the project.
  
  <p class="text">
     There are <tt>modules-<em>target-name</em></tt> targets for each target 
     which will iterate over the module list and execute 
     <tt><em>target-name</em></tt>.
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     The module list is controlled by the configuration done in the 
     <tt>_configure-modules</tt> section in the <tt>build/build.xml</tt> file.  
     This section defines modules, and groups of modules.  The module list can 
     be specified on the command line by setting the 
     <tt>-Dmodules=<em>list</em></tt> property or you can specify a module group
     list by setting <tt>-Dgroups=<em>list</em></tt>.
  
  <p class="text">
     List names are seperated by '<tt>,</tt>' (comma).  You will need to quote 
     lists which contain spaces, or simply omit the spaces.  The build system 
     does not make any attempt to correctly identify inter-module dependencies, 
     so you will have to list the modules which are required in the correct 
     order.
  
  <p class="text">
     For example, assume you have a project which defines 4 modules:
     <blockquote>
        <tt>module_A</tt><br>
        <tt>module_B</tt><br>
        <tt>module_C</tt><br>
        <tt>module_D</tt><br>
     </blockquote>
  
  <p class="text">
     and two groups:
     <blockquote>
        <tt>group_AB</tt> (<tt>module_A</tt>, <tt>module_B</tt>)<br>
        <tt>group_CD</tt> (<tt>module_C</tt>, <tt>module_D</tt>)<br>
     </blockquote>
  
  <p class="text">
     To execute <tt>module_A</tt> by itself you would use something like this:
     <blockquote>
        <code>./build/build.sh -Dmodules=module_A</code><br>
     </blockquote>
  
  <p class="text">
     To execute <tt>module_A</tt> then <tt>module_B</tt> you could:
     <blockquote>
        <code>./build/build.sh -Dmodules=module_A,module_B</code><br>
        <br><font size="-1">or</font><br><br>
        <code>./build/build.sh -Dgroups=group_AB</code><br>
     </blockquote>
  
  <p class="text">
     Finally to execute all of the modules you could:
     <blockquote>
        <code>./build/build.sh -Dmodules=module_A,module_B,module_C,module_D</code><br>
        <br><font size="-1">or</font><br><br>
        <code>./build/build.sh -Dgroups=group_AB,group_CD</code><br>
     </blockquote>
  
  <p class="text">
     The build module also has a <tt>Module Pass-through Hooks</tt> section, 
     which contains targets for each module named 
     <tt>_module-<em>module-name</em>-<em>target-name</em></tt>. 
     These targets are called during the execution of the 
     <tt>modules-<em>target-name</em></tt> calls after the target has 
     completed.
  
  <p class="text">
     There is also a 
     <tt>_module-<em>module-name</em>-<em>target-name</em>-prepare target</tt>
     which will be called just before execution, but is rarely used.  These 
     targets do not need to be defined and should not be if they are not going 
     to be used.
  
  <p class="text">
     Currently only post execution targets are defined for the <tt>most</tt> 
     and <tt>all</tt> targets, where the <tt>*-all</tt> depends on the
     <tt>*-most</tt> target.  These pull the output files from the 
     <em>modules</em> <tt>output/</tt> directory and install them into the 
     <em>projects</em> <tt>output/</tt> directory in the proper manner for 
     the release.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <jsp:include page="/developers/navigation.jsp" flush="true"/>
  
  
  
  1.1                  newsite/src/docs/developers/guide/codestyle.jsp
  
  Index: codestyle.jsp
  ===================================================================
  <jsp:include page="/developers/head.jsp" flush="true"/>
  <!-- $Id: codestyle.jsp,v 1.1 2001/11/19 23:00:23 user57 Exp $ -->
  <jsp:include page="/developers/slogan.jsp" flush="true">
     <jsp:param name="SLOGAN" value="CODE STYLE GUIDE"/>
  </jsp:include>
  
  <!-- ==================================================================== -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     This guide is here to make the JBoss code more readable.  Because of the 
     <em>age</em> of JBoss there will be always some code around which does not
     follow this guide, but over time this will become less and less.
  
  <!-- end picateam block --></td></tr></table>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     Layout
  
  <p class="text">
     <dl class="text">
        <dt><b>Identation</b></dt>
        <dd>
           3 Spaces (no Tabs because they look ugly in "dump" editors 
           like HTML pages (online CVS)).
        </dd>
  
        <dt><b>Comments</b></dt>
        <dd>
           Line up comments on the left hand side (also Javadocs).
        </dd>
  
        <dt><b>Grouping</b></dt>
        <dd>
           Group members, methods etc. according to the templates and 
           use the template's comments to separate them.
        </dd>
     </dl>
  
  <p class="head">
     General Code
  
  <p class="text">
     The first part of a JBoss class should contain the Copyright comment:
     <pre class="code">
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
     </pre>
  
     <p class="text">
        Next part is the package definition. Please use 
        <b>NO ABBREVIATIONS</b> and follow the Java guidelines.
  
     <p class="text">
        Now add the external classes import statement. Please use always 
        fully qualified imports (no *) because then everyone knows which 
        class comes from which package. When you have a conflict then import 
        none or the best one and fully qualify the other class(es) when you 
        use them (example: <tt>java.util.Date</tt> and <tt>java.sql.Date</tt>).
  
     <p class="text">
        Add the JavaDoc documentation for the main class which looks like this:
        <pre class="code">
  /**
   * &lt;description&gt; 
   *
   * @see &lt;related&gt;
   *
   * @author  &lt;a href="mailto:{email}"&gt;{full name}&lt;/a&gt;.
   * @version $Revision: 1.1 $
   *   
   * &lt;p&gt;&lt;b&gt;Revisions:&lt;/b&gt;
   *
   * &lt;p&gt;&lt;b&gt;yyyymmdd author:&lt;/b&gt;
   * &lt;ul&gt;
   * &lt;li&gt; explicit fix description (no line numbers but methods) 
   *            go beyond the cvs commit message
   * &lt;/ul&gt;
   *    eg: 
   * &lt;p&gt;&lt;b&gt;20010516 marc fleury:&lt;/b&gt;
   * &lt;ul&gt;
   * &lt;li&gt; Ask all developers to clearly document the Revision, 
   *            changed the header.  
   * &lt;/ul&gt;
   */
        </pre>
  
     <p class="text">
        <b>NOTE:</b> The above is a guide for creating class javadocs.  There
        are certain sections (<tt>&lt;description&gt;</tt>, 
        <tt>&lt;related&gt;</tt>, ...) which are meant to be replaced 
        by the individual developer as it applies to the class at hand.  Please
        <b>DO NOT</b> cut and pase this example with out replacing these tokens.
  
     <p class="text">
        Instead of <tt>@see</tt> you can also use <tt>{@link ...}</tt> inside 
        the comments (inline reference). <b>ALWAYS</b> add these comments, 
        the developer after you will love it and hopefully do his/her part 
        as well.
  
     <p class="text">
        Document all public (and mostly protected) members and methods in the 
        class with JavaDoc except you did not add new functionality during 
        overwriting a method (comming from an Interface or a base class). 
        Especially note the following:
  
        <ul class="text">
           <li>When Parameter can or cannot be null and also what it 
               means when null is allowed.
           <li>When Return values can be or are never null.
           <li>Document side effects.
           <li>Usefull is also when you mention if and where another method 
               or the overwritten method is called. Because this is open-source 
               it is not that important but when you only rely on the 
               documentation it can avoid endless calls or other avoid mistakes 
               when you have to call the overwritten method.
          <li>Please add JavaDoc to every method/class when you working on this 
              page. When you are not 100% sure about what you read please 
              enlose the changed lines into "&lt;review&gt;" and 
              "&lt;/review&gt;" to indicate what you changed and gave up for a 
              review. When someone reviewed it just remove this marks, thanx.
        </ul>
      </p>
                                
      <p class="head">
         Coding a Class
  
      <p class="text">
         <pre class="code">
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  
  package x;
  
  // EXPLICIT IMPORTS
  import a.b.C1; // GOOD
  import a.b.C2;
  import a.b.C3;
  
  // DO NOT WRITE
  import a.b.*;  // BAD
  
  // DO NOT USE "TAB" TO INDENT CODE USE *3* SPACES FOR PORTABILITY AMONG EDITORS
  
  /**
   * &lt;description&gt; 
   *
   * @see &lt;related&gt;
   * @author  &lt;a href="mailto:{email}"&gt;{full name}&lt;/a&gt;.
   * @author  &lt;a href="mailto:[EMAIL PROTECTED]"&gt;Marc Fleury&lt;/a&gt;
   * @version $Revision: 1.1 $
   *   
   * &lt;p&gt;&lt;b&gt;Revisions:&lt;/b&gt;
   *
   * &lt;p&gt;&lt;b&gt;yyyymmdd author:&lt;/b&gt;
   * &lt;ul&gt;
   * &lt;li&gt; explicit fix description (no line numbers but methods) go 
   *            beyond the cvs commit message
   * &lt;/ul&gt;
   *  eg: 
   * &lt;p&gt;&lt;b&gt;20010516 marc fleury:&lt;/b&gt;
   * &lt;ul&gt;
   * &lt;li&gt; Ask all developers to clearly document the Revision, 
   *            changed the header.  
   * &lt;/ul&gt;
   */
  public class X
     extends Y
     implements Z
  {
     // Constants -----------------------------------------------------
     
     // Attributes ----------------------------------------------------
     
     // Static --------------------------------------------------------
     
     // Constructors --------------------------------------------------
     
     // Public --------------------------------------------------------
     
     public void startService() throws Exception
     { // Use the newline for the opening bracket so we can match top and bottom 
bracket visually
        
        Class cls = Class.forName(dataSourceClass);
        vendorSource = (XADataSource)cls.newInstance();
        
        // JUMP A LINE BETWEEN LOGICALLY DISCTINT **STEPS** AND ADD A LINE OF COMMENT 
TO IT
        cls = vendorSource.getClass();
        
        if(properties != null && properties.length() > 0)
        {
        
           try
           {
           }
           catch (IOException ioe)
           {
           }
           for (Iterator i = props.entrySet().iterator(); i.hasNext();)
           {
              
              // Get the name and value for the attributes
              Map.Entry entry = (Map.Entry) i.next();
              String attributeName = (String) entry.getKey();
              String attributeValue = (String) entry.getValue();
              
              // Print the debug message
              log.debug("Setting attribute '" + attributeName + "' to '" +
                 attributeValue + "'");
              
              // get the attribute 
              Method setAttribute =
              cls.getMethod("set" + attributeName,
                 new Class[] { String.class });
              
              // And set the value  
              setAttribute.invoke(vendorSource,
                 new Object[] { attributeValue });
           }
        }
        
        // Test database
        vendorSource.getXAConnection().close();
        
        // Bind in JNDI
        bind(new InitialContext(), "java:/"+getPoolName(),
           new Reference(vendorSource.getClass().getName(),
              getClass().getName(), null));
     }
  
     // Z implementation ----------------------------------------------
     
     // Y overrides ---------------------------------------------------
     
     // Package protected ---------------------------------------------
     
     // Protected -----------------------------------------------------
     
     // Private -------------------------------------------------------
     
     // Inner classes -------------------------------------------------
  }
        </pre>
      </p>
  
      <p class="head">
         Coding an Interface
  
      <p class="text">
         <pre class="code">
  /*
   * JBoss, the OpenSource J2EE webOS
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  
  package x;
  
  // EXPLICIT IMPORTS
  import a.b.C1; // GOOD
  import a.b.C2;
  import a.b.C3;
  
  // DO NOT WRITE
  import a.b.*;  // BAD
  
  // DO NOT USE "TAB" TO INDENT CODE USE *3* SPACES FOR PORTABILITY AMONG EDITORS
  
  /**
   * &lt;description&gt; 
   *
   * @see &lt;related&gt;
   * @author  &lt;a href="mailto:{email}"&gt;{full name}&lt;/a&gt;.
   * @author  &lt;a href="mailto:[EMAIL PROTECTED]"&gt;Marc Fleury&lt;/a&gt;
   * @version $Revision: 1.1 $
   *   
   * &lt;p&gt;&lt;b&gt;Revisions:&lt;/b&gt;
   *
   * &lt;p&gt;&lt;b&gt;yyyymmdd author:&lt;/b&gt;
   * &lt;ul&gt;
   * &lt;li&gt; explicit fix description (no line numbers but methods) go 
   *            beyond the cvs commit message
   * &lt;/ul&gt;
   *  eg: 
   * &lt;p&gt;&lt;b&gt;20010516 marc fleury:&lt;/b&gt;
   * &lt;ul&gt;
   * &lt;li&gt; Ask all developers to clearly document the Revision, 
   *            changed the header.  
   * &lt;/ul&gt;
   */
  public interface X
     extends Y
  {
     int MY_STATIC_FINAL_VALUE = 57;
  
     ReturnClass doSomething() throws ExceptionA, ExceptionB;
     
  }
        </pre>
  
  <jsp:include page="/developers/navigation.jsp" flush="true"/>
  
  
  
  1.1                  newsite/src/docs/developers/guide/index.jsp
  
  Index: index.jsp
  ===================================================================
  <jsp:include page="/developers/head.jsp" flush="true"/>
  <!-- $Id: index.jsp,v 1.1 2001/11/19 23:00:23 user57 Exp $ -->
  <jsp:include page="/developers/slogan.jsp" flush="true">
     <jsp:param name="SLOGAN" value="DEVELOPER GUIDES"/>
  </jsp:include>
  
  <!-- ==================================================================== -->
  
  <!-- Preface -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     Here you will find the various guides, notes and other useful 
     information which will help you become a better JBoss developer.
  
  <p class="text">
     If you are not a developer or you are looking for user guides, HOWTOs
     or other documentation you are best to look at the
     <a href="/doco.jsp">User Documentation</a> page.
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     This collection of documents is growing and changing all of the time, 
     so you might want to check back every so often to see if something new
     has been added or an existing document has been updated.
  
  <p class="text">
     JBoss developoment is moving at a rapid pace, so these pages might not
     always be <em>completly</em> accurate with respect to the current 
     developments.  If you find that a document is outdated please let us
     know.
  
  <!-- ==================================================================== -->
  
  <p class="head">
     New Developers
  
  <p class="text">
     <ul class="text">
        <li><a href="quickstart.jsp">Quick Start Guide</a>
        <li><a href="codestyle.jsp">Code Style Guide</a>
     </ul>
  
  <p class="head">
     General
  
  <p class="text">
     <ul class="text">
        <li><a href="logging.jsp">Logging Guide</a>
     </ul>
  
  <p class="head">
     Build System
  
  <p class="text">
     <ul class="text">
        <li><a href="buildsystem.jsp">Build System Guide</a>
        <li><a href="buildsystem-faq.jsp">Build System FAQ</a>
     </ul>
  
  <jsp:include page="/developers/navigation.jsp" flush="true"/>
  
  
  
  1.1                  newsite/src/docs/developers/guide/logging.jsp
  
  Index: logging.jsp
  ===================================================================
  <jsp:include page="/developers/head.jsp" flush="true"/>
  <!-- $Id: logging.jsp,v 1.1 2001/11/19 23:00:23 user57 Exp $ -->
  <jsp:include page="/developers/slogan.jsp" flush="true">
     <jsp:param name="SLOGAN" value="LOGGING GUIDE"/>
  </jsp:include>
  
  <!-- ==================================================================== -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     This document shows the prefered method for using the 
     <a href="http://jakarta.apache.org/log4j";>Log4j</a> logging
     system inside of JBoss.
  
  <!-- end picateam block --></td></tr></table>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     Using Logging
  
  <p class="text">
     The first thing you need to decide is what is the category name your going
     to use. This should be based on the class name of the component doing
     the logging. If there are multiple instances of a component, and it is
     associated with another meaningful name, this name will be
     added as a subcategory to the component class name. For example,
     the <tt>org.jboss.security.plugins.JaasSecurityManager</tt> class uses
     a base category name equal to its class name. There can be
     multiple <tt>JaasSecurityManager</tt> instances, and each is associated
     with a security domain name. Therefore, the complete Log4j
     category name used by the <tt>JaasSecurityManager</tt> is
     <tt>org.jboss.security.plugins.JaasSecurityManager.<em>securityDomain</em></tt>,
     where the <em>securityDomain</em> value is the name of the associated
     security domain.
  
  <p class="text">
     To create a <tt>Logger</tt> for <tt>JaasSecurityManager</tt> this is 
     the code snippet:
     <pre class="code">
  package org.jboss.security.plugins;
  
  import org.jboss.logging.Logger;
  
  public class JaasSecurityManager {
  {
      Logger log;
  
      public JaasSecurityManager (String securityDomain)
      {
          String name = JaasSecurityManager.class.getName() + '.' + securityDomain;
          log = Logger.getLogger(name);
      }
  }
     </pre>
  
  <p class="text">
     After that just use the log with whatever priority level is approriate.
  
  <!-- ==================================================================== -->
  
  <p class="head">
     Priority Usage Recommendations
  
  <dl class="text">
     <dt><b>TRACE</b></dt>
     <dd>Use <tt>TRACE</tt> the level priority for log messages 
        that are directly associated with activity that corresponds requests. 
        Further, such messages should not be submitted to a Logger unless the 
        Logger category priority threshold indicates that the message will be 
        rendered. Use the <code>Logger.isTraceEnabled()</code> method to 
        determine if the category priority threshold is enabled. The point of 
        the <tt>TRACE</tt> priority is to allow for deep probing of the JBoss 
        server behavior when necessary. When the <tt>TRACE</tt> level priority 
        is enabled, you can expect the number of messages in the JBoss server 
        log to grow at least a x <em>N</em>, where <em>N</em> is the number of
        requests received by the server, a some constant. The server log may
        well grow as power of <em>N</em> depending on the request-handling layer 
        being traced.
     </dd>
  
     <dt><b>DEBUG</b></dt>
     <dd>Use the <tt>DEBUG</tt> level priority for log messages 
        that convey extra information regarding life-cycle events. Developer or 
        in depth information required for support is the basis for this priority. 
        The important point is that when the <tt>DEBUG</tt> level priority is 
        enabled, the JBoss server log should not grow proportionally with the 
        number of server requests. Looking at the <tt>DEBUG</tt> and 
        <tt>INFO</tt> messages for a given service category
        should tell you exactly what state the service is in, as well as what
        server resources it is using: ports, interfaces, log files, etc.
     </dd>
  
     <dt><b>INFO</b></dt>
     <dd>Use the <tt>INFO</tt> level priority for service 
        life-cycle events and other crucial related information. Looking at 
        the <tt>INFO</tt> messages for a given service category should tell you 
        exactly what state the service is in.
     </dd>
  
     <dt><b>WARN</b></dt>
     <dd>Use the <tt>WARN</tt> level priority for events that may 
        indicate a non-critical service error. Resumable errors, or minor breaches
        in request expectations fall into this category. The distinction between 
        <tt>WARN</tt> and <tt>ERROR</tt> may be hard to discern and so its up to
        the developer to judge.
        The simplest criterion is would this failure result in a user support
        call. If it would use <tt>ERROR</tt>. If it would not use <tt>WARN</tt>.
     </dd>
  
     <dt><b>ERROR</b></tt>
     <dd>Use the <tt>ERROR</tt> level priority for events 
        that indicate a disruption in a request or the ability to service a request.
        A service should have some capacity to continue to service
        requests in the presence of <tt>ERROR</tt>s.
     </dd>
  
     <dt><b>FATAL</b></dt>
     <dd>Use the <tt>FATAL</tt> level priority for events that 
        indicate a critical service failure. If a service issues a <tt>FATAL</tt>
        error it is completely unable to service requests of any kind.
     </dd>
  </dl>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     Activating the <tt>TRACE</tt> Priority
  
  <p class="text">
     Activating the <tt>TRACE</tt> level priority is done by adding a 
     category threshold statement to the <tt>log4j.properties</tt> file. 
     To enable tracing for a particular <tt>JaasSecurityManager</tt> security 
     domain called <tt>other</tt> add:
     <pre class="output">
  log4j.category.org.jboss.security.plugins.JaasSecurityManager.other=\
      TRACE#org.jboss.logging.log4j.TracePriority
     </pre>
  
  <p class="text">
     To enable the <tt>TRACE</tt> level priority for all 
     <tt>JaasSecurityManager</tt> instances add:
     <pre class="output">
  log4j.category.org.jboss.security.plugins.JaasSecurityManager=\
      TRACE#org.jboss.logging.log4j.TracePriority
     </pre>
  
  <p class="text">
     To enable the <tt>TRACE</tt> level priority for all components in the 
     <tt>security</tt> package:
     <pre class="output">
  log4j.category.org.jboss.security=TRACE#org.jboss.logging.log4j.TracePriority
     </pre>
  
  <p class="text">
     You can also redirect a given categories message to a seperate log 
     file or endpoint by assiging it a different appender. For example, 
     to redirect all <tt>security</tt> output to a <tt>security.log</tt> file, 
     and set the security package threshold to <tt>TRACE</tt> use:
     <pre class="output">
  ### The security.log file appender
  log4j.appender.SecurityLog=org.apache.log4j.FileAppender
  log4j.appender.SecurityLog.File=../log/security.log
  log4j.appender.SecurityLog.layout=org.apache.log4j.PatternLayout
  log4j.appender.SecurityLog.layout.ConversionPattern=[%c{1}] %m%n
  log4j.appender.SecurityLog.Append=false
  log4j.category.org.jboss.security=\
      TRACE#org.jboss.logging.log4j.TracePriority, SecurityLog
     </pre>
  
  <jsp:include page="/developers/navigation.jsp" flush="true"/>
  
  
  
  1.1                  newsite/src/docs/developers/guide/quickstart.jsp
  
  Index: quickstart.jsp
  ===================================================================
  <jsp:include page="/developers/head.jsp" flush="true"/>
  <!-- $Id: quickstart.jsp,v 1.1 2001/11/19 23:00:23 user57 Exp $ -->
  <jsp:include page="/developers/slogan.jsp" flush="true">
     <jsp:param name="SLOGAN" value="QUICK START GUIDE"/>
  </jsp:include>
  
  <!-- ==================================================================== -->
  
  <!-- Preface -->
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     This document is meant to help developers who are new to the project
     or for those who might not fully understand how to check out the correct 
     CVS module and build it.
  
  <p class="text">
     This guide will <b>NOT</b> show you how to write code, nor will it 
     explain how JBoss functions or instruct you on how to use your computer
     or make a cup of coffee.  Though it is possible that such guide documents
     exist or are in the process of being brought to life, don't expect to find
     any of that information here.
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     Unless specified otherwise, all examples given are formated for UNIX
     users and assume that the current working directory (CWD) is the project
     directory which contains the <tt>build/</tt> sub-directory.  Windows
     users can <em>probably</em> omit any preceding <tt>./</tt>, substitute 
     <tt>/</tt> for <tt>\</tt> and change <tt>.sh</tt> for <tt>.bat</tt> to 
     create runnable command examples.
  
  <p class="text">
     Some of the output examples have been truncated either horizontally,
     vertically or both to preserve the layout of this page.  Truncation
     is marked by <tt>...</tt>.
  
  <p class="text">
     If you are looking for more detailed information about the build system
     check out the <a href="buildsystem.jsp">Build&nbsp;System&nbsp;Guide</a> 
     or to peruse the list of frequently asked questions (and their answers) 
     look at the <a href="buildsystem-faq.jsp">Build&nbsp;System&nbsp;FAQ</a>.
  
  <!-- ==================================================================== -->
  
  <p class="head"><a name="Contents">Contents</a>
  
  <p class="text">
     <ul class="text">
       <li><a href="#Introduction">Introduction</a>
       <li><a href="#Requirements">Requirements</a>
       <li><a href="#Getting_the_Sources">Getting the Sources</a>
       <li><a href="#Get_To_Know_Your_Environment">Get To Know Your Environment</a>
       <li><a href="#Start_the_Build">Start the Build</a>
       <li><a href="#Start_JBoss">Start JBoss</a>
       <li><a href="#Run_the_Testsuite">Run the Testsuite</a>
       <li><a href="#What_To_Do_Next">What To Do Next</a>
     </ul>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Introduction">Introduction<a/>
  
  <p class="text">
     Hello friends and welcome to the wonderful world of JBoss!  In the next
     few mintutes (hours or days, depending on how fast your computer, network
     connection and cognitive ability is) this guide will show you how to:
     <ul class="text">
        <li>Check out the latest development source files from CVS 
           (or download a nightly snapshot)
        <li>Setup your build environemnt
        <li>Build a partial or complete development server release
        <li>Start up the server instance
        <li>Connect to the instance
        <li>Execute the testsuite
     </ul>
  
  <p class="text">
     This guide will focus on the <tt>jboss-all</tt> project.  This project
     contains everything used to build the full production release of JBoss
     and is used by most developers when working on the sources.  There are 
     other methods to check out the components that it provides, but we 
     do not suggest that you try to do that.
  
  <p class="text">
     There are other projects available, which use the same build system.
     Sections of this guide, which are specific to CVS or the build system
     can <em>probably</em> apply to those projects as well; your millage may
     vary.
  
  <p class="text">
     To follow the guide, simply read the sections in order and perform the
     tasks which each section defines.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Requirements">Requirements<a/>
  
  <p class="text">
     To effectivly build JBoss make sure to meet the following:
     <ul class="text">
       <li>A UNIX (posix) or Windows (win32) compatible operating system.
       <li>A Java Developers Kit (JDK) version 1.3 or compatible compiler and
          class libraries.
       <li>100-350 megabytes of disk space<sup>*</sup>:
          <ul class="text">
             <li>50-100 megabytes for the sources, tools and support libraries.
             <li>100-150 megabytes to build a full developement release
                and the testsuite.
             <li>50-100 megabytes to build javadocs.
          </ul>
       <li>A CVS client or access to a snapshot of the development sources.
       <li>A brain, a sense of humor and some paitence. =)
     </ul>
  
  <p class="text">
     <b>*</b> Disk space requirements are rougly based on the 
     <tt>jboss-all</tt> project.  Other projects may require more or less
     space.
  
  <p class="text">
     Windows users can <em>optionaly</em> install the 
     <a href="http://sources.redhat.com/cygwin";>Cygwin</a> tools available from 
     <a href="http://www.redhat.com";>RedHat</a>.  This is in no way a 
     requirement, but could make your life easier if you are used to using a 
     UNIX-like OS but are stuck on Windows.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Getting_the_Sources">Getting the Sources<a/>
  
  <p class="text">
     You can get the sources for the <tt>jboss-all</tt> project from CVS
     or from a nightly CVS snapshot.
  
  <p class="text">
     To get the sources from CVS, follow the instructions on the 
     <a href="cvs.jsp">CVS</a> page to get and setup your CVS client.  
     Once you have done that you can check out the module:
     <blockquote>
        <code class="command">cvs -z3 checkout jboss-all</code><br>
     </blockquote>
  
  <p class="text">
     You should see output similar to:
     <font size="-1"><pre class="output">
  U tools/bin/ant
  U tools/bin/ant.bat
  U tools/bin/antRun
  U tools/bin/antRun.bat
  U tools/bin/antx.bat
  U tools/bin/lcp.bat
  U tools/bin/runant.pl
  U tools/bin/runant.py
  U tools/lib/JavaStyle.jar
  U tools/lib/ant.jar
  ...
  U thirdparty/apache/axis/lib/axis.jar
  U thirdparty/apache/axis/samples/addr/Address.class
  U thirdparty/apache/axis/samples/addr/AddressBook.class
  U thirdparty/apache/axis/samples/addr/AddressBook.wsdl
  ...
     </pre></font>
  
  <p class="text">
     To get the sources from a nightly 
     <a href="/snapshots/">snapshot</a> simply download the 
     appropriate archive format for the <tt>jboss-all</tt> project
     (<a href="/snapshots/jboss-all.zip">zip</a> or
     <a href="/snapshots/jboss-all.tgz">tgz</a>), and extract it.
  
  <p class="text">
     Once you have checked out or extracted the project sources you 
     should have a <tt>jboss-all/</tt> directory with a sub-directory layout 
     similar<sup>*</sup> to this:
     <blockquote>
        <tt>tools/</tt><br>
        <tt>thirdparty/</tt><br>
        <tt>build/</tt><br>
        <tt>j2ee/</tt><br>
        <tt>naming/</tt><br>
        <tt>server/</tt><br>
        <tt>pool/</tt><br>
        <tt>connector/</tt><br>
        <tt>messaging/</tt><br>
        <tt>security/</tt><br>
        <tt>cluster/</tt><br>
        <tt>admin/</tt><br>
        <tt>testsuite/</tt><br>
        <tt>plugins/</tt><br>
     </blockquote>
  
  <p class="text">
     <b>*</b> The exact directory layout will change as modules are added or
     removed from the project.  As long as there were no problems durring the
     checkout everything should be fine.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Get_To_Know_Your_Environment">Get To Know Your Environment<a/>
  
  <p class="text">
     Now that you have the sources you might want to poke around a little
     to become more comfortable with the module and directory structure.
  
  <p class="text">
     The sub-directories inside of <tt>jboss-all/</tt> are each module
     directories (except for the <tt>CVS/</tt> directory, which we will
     ignore from now on).
  
  <p class="text">
     Each module contains the same basic layout with a few exceptions, which
     you are about to learn.
  
  <p class="text">
     The <tt>tools</tt> module is a special module which contains scripts,
     libraries and other files which are required for the the build system
     to function.  Unless you are adding new functionality to the build 
     system or updating a support library, you can safely ignore it.
  
  <p class="text">
     Next is the <tt>thirdparty</tt> module, which holds as you might guess,
     libraries and other support files which are dependencies of the project
     and are maintained by a thirdparty vendor.
  
  <p class="text">
     The <tt>plugins</tt> modules, is really just an organization tool to
     seperate the core modules from optional plugin components to the server.
     The component modules that are here are considered standard plugins and
     are included in JBoss releases.  Each directory under <tt>plugins/</tt>
     is a regular module (as described below).
     
  <p class="text">
     Finally there is the <tt>build</tt> module.  This module controls the
     building of all other modules and is responsible for generating project
     release directories and archives.
  
  <p class="text">
     All of the other modules follow a standard layout and usually contain
     source files which are stored in the <tt>src/</tt> sub-directory.
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
     
  <p class="text">
     Each module has a <tt>build.xml</tt> which is the build control file and
     contains all of the information, targets and tasks to build the module.
  
  <p class="text">
     The build system is based on Ant, but you <b>MUST</b> use the given
     <tt>build.sh</tt> or <tt>build.bat</tt> scripts to start the process.
     Do <b>NOT</b> expect that executing <tt>ant -f build.xml</tt> will work,
     because it <b>WILL NOT</b>.
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     Once you are comfortable we can start building.  As an optional step, you
     can <em>pre-initialize</em> the build system and define or set some user
     local properties, which can alter the behavior of the build:
     <blockquote>
        <code class="command">./build/build.sh init</code><br>
     </blockquote>
  
  <p class="text">
     This will create (among other things) a <tt>./build/local.properties</tt>
     file, which you should take a look at now.  This file allows you to change
     how the build system works with out accidentially checking in your local
     changes.  If this is the first time you are building the sources you might
     want to leave things as they are, or you might run into problems.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Start_the_Build">Start the Build<a/>
  
  <p class="text">
     Finally we are ready to actually start up the build and make it do 
     something useful!
  
  <p class="text">
     The default project build configuration is setup to build all of the
     standard components which are included in a production release, so
     all we have todo is tell the build system to start:
     <blockquote>
        <code class="command">./build/build.sh</code><br>
     </blockquote>
  
  <p class="text">
     This may take minutes or hours depending on how fast (or slow) your 
     computer is.  On an Intel Pentium 3 800 512m running RedHat 7.2 it 
     takes about 3 minutes.
  
  <p class="text">
     The output of the build should be slightly verbose and look something like
     this:
     <font size="-1"><pre class="output">
  Searching for build.xml ...
  Buildfile: /home/jason/ws/jboss-all/build/build.xml
  
  init:
  
  _init-child:
  
  _init-local-properties:
       [copy] Copying 1 file to /home/jason/ws/jboss-all/build
  
  _init-buildlog:
  
  _configure:
  
  _configure-tools:
  
  _configure-libraries:
  
  _configure-modules:
       [echo] groups:  default
       [echo] modules: 
j2ee,naming,server,security,messaging,pool,connector,admin,cluster...
  
  _configure-tasks:
  
  _init-show-environment:
  
  modules-most:
  [execmodules] 
      ====================================================================== 
      ==  Executing 'most' in module 'j2ee'...
      ==
  ...
  
  install-dependencies:
       [copy] Copying 3 files to 
/home/jason/ws/jboss-all/build/output/jboss-3.0.0alpha/lib
       [copy] Copying 29 files to 
/home/jason/ws/jboss-all/build/output/jboss-3.0.0alpha/lib/ext
       [copy] Copying 7 files to 
/home/jason/ws/jboss-all/build/output/jboss-3.0.0alpha/client
  
  install:
  
  most:
  
  main:
  
  BUILD SUCCESSFUL
  
  Total time: 2 minutes 17 seconds
     </pre></font>
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     You may see some warnings durring the build, probably due to the usage of
     deprecated methods or something, but you can safely ignore those.  If 
     everything built with no errors you should see a <tt>BUILD SUCCESSFUL</tt>
     message at the end (as shown above).
  
  <!-- end picateam block --></td></tr></table>
  
  <!-- 
     | Show some error siturations too.
   -->
  
  <p class="text">
     In this example the <em>default</em> target was used.  There are a number
     of other targets which are used to produce more output, show information
     or clean things up which you should play with too.  To get a list of the
     most common targets and a brief description, re-run the build and 
     specify the <tt>help</tt> target:
     <blockquote>
        <code class="command">./build/build.sh help</code><br>
     </blockquote>
  
  <p class="text">
     This command should output something like this:
     <font size="-1"><pre class="output">
  Searching for build.xml ...
  Buildfile: /nfs/home/jason/ws/jboss/tmp/jboss-all/build/build.xml
  
  help:
       [help] 
       [help]   The The JBoss Build module.
       [help] 
       [help]     all                    Executes all modules and builds everything.
       [help]     clean                  Cleans up most generated files.
       [help]     clobber                Cleans up all generated files.
       [help]     main                   Executes the default target (most).
       [help]     most                   Executes all modules and builds most 
everything.
       [help]     release-all            Builds a distribution for each archive type.
       [help]     release-tar            Builds a TAR release distribution.
       [help]     release-tgz            Builds a TAR-GZIP release distribution.
       [help]     release-zip            Builds a ZIP release distribution.
       [help]     run-basic-testsuite    Execute the testsuite.
       [help]     run-jboss              Runs the JBoss server.
       [help]     run-testsuite          Execute the testsuite.
       [help]     testcase               Run a test case.
       [help]     tests                  Execute all tests.
       [help] 
       [help]     -Dgroups=&lt;group&gt;[(,&lt;group&gt;)*]      Specify the module 
groups.
       [help]     -Dmodules=&lt;module&gt;[(,&lt;module&gt;)*]   Specify the modules.
       [help]                                        (overrides groups).
       [help]     -Dtest=&lt;testcase&gt;                  Specify the testcase to run.
       [help]     -projecthelp for all targets
       [help]     -help for full options
       [help] 
  
  BUILD SUCCESSFUL
  
  Total time: 2 seconds
     </pre></font>
  
  <p class="text">
     To help you and JBoss build system maintainers debug problems a
     <tt>build.log</tt> file is created when the build system initializes,
     which contains all of the output which is written to console.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Start_JBoss">Start JBoss<a/>
  
  <p class="text">
     Once you have successfully built a development release of JBoss, we can
     then start up the server.  But before we do that lets look at what the
     build system actually did.
  
  <p class="text">
     In each module directory (other than <tt>tools</tt>, <tt>thirdparty</tt>
     and <tt>plugins</tt>) there is an <tt>output/</tt> sub-directory.  This
     directory contains all of the <em>output</em> that the build system for
     that module has created.  No other files (short of <tt>build.log</tt>
     and <tt>local.properties</tt>) are created outside of this directory.
  
  <p class="text">
     The files which are most important to start a JBoss instance are in the
     <tt>output/</tt> directory of the <tt>build</tt> module.  Take a look
     and you should see a versioned sub-directory for the release which you
     have sources for.  The version used above is JBoss v3.0. 0alpha, so there
     is a <tt>build/output/jboss-3.0.0alpha/</tt> directory.  In there is the
     exact file system layout which is used to build a production release
     archinve.  This is also the layout which JBoss requires to run.  
  
  <p class="text">
     At the time this document was written the layout looked like this:
     <blockquote>
         <tt>lib/</tt><br>
         <tt>lib/ext/</tt><br>
         <tt>client/</tt><br>
         <tt>docs/</tt><br>
         <tt>docs/images/</tt><br>
         <tt>docs/jms-examples/</tt><br>
         <tt>docs/cluster/</tt><br>
         <tt>docs/cluster/examples/</tt><br>
         <tt>deploy/</tt><br>
         <tt>deploy/farm/</tt><br>
         <tt>deploy/lib/</tt><br>
         <tt>bin/</tt><br>
         <tt>conf/</tt><br>
         <tt>conf/default/</tt><br>
         <tt>conf/boot-server/</tt><br>
         <tt>conf/cluster/</tt><br>
         <tt>db/</tt><br>
         <tt>db/jbossmq/</tt><br>
         <tt>db/hypersonic/</tt><br>
         <tt>log/</tt><br>
         <tt>tmp/</tt><br>
         <tt>admin/</tt><br>
         <tt>admin/client/</tt><br>
         <tt>admin/client/lib/</tt><br>
         <tt>admin/components/</tt><br>
     </blockquote>
  
  <p class="text">
     Now back to actually starting the server.  There both UNIX and Windows
     scripts to <em>run</em> the server in the <tt>bin/</tt> directory.  To
     start the server by hand from the project root directory you run (change
     release directory according to the version you are using):
     <blockquote>
        <code class="command">./build/output/jboss-3.0.0alpha/bin/run.sh</code><br>
     </blockquote>
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     There is also a <tt>run-jboss</tt> target, which performs the same
     action and takes care of using the correct release directory based on
     the current version automatically:
     <blockquote>
        <code class="command">./build/build.sh run-jboss</code><br>
     </blockquote>
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     Using the build system to start JBoss will re-direct the server output
     to <tt>build/run.log</tt> <em>instead</em> of writting them to console.
     This target is meant to make it easer to run the testsuite, you may or
     may not want to use it.
  
  <p class="text">
     The server should produce output similar to the following (either to
     console or to the log file):
     <font size="-1"><pre class="output">
  ================================================================================
   JBoss Bootstrap Environment
  
   JAVA: /opt/java/jdk/bin/java
  
   JAVA_OPTS: -server -Djboss.boot.loader.name=run.sh 
  
-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
 
  -Djavax.xml.parsers.SAXParserFactory=org.apache.crimson.jaxp.SAXParserFactoryImpl
  
   CLASSPATH: /home/jason/ws/jboss-all/build/output/jboss-3.0.0alpha/bin/run.jar:
  
  ================================================================================
  
  [GPA] Microkernel ClassLoaders and Libraries initialized
  Libraries adding URLClassLoader 1836372353 key URL 
file:/home/jason/ws/jboss-all/build/output/...
  Libraries adding URLClassLoader -1140360937 key URL 
file:/home/jason/ws/jboss-all/build/output/...
  Libraries adding URLClassLoader -237481782 key URL 
file:/home/jason/ws/jboss-all/build/output/...
  [19:13:05,862,root] Started Log4jService, 
config=file:/home/jason/ws/jboss-all/build/output/...
  [19:13:05,947,GPA] General Purpose Architecture [GPA]
  [19:13:05,957,GPA] Java version: 1.3.1_01,Sun Microsystems Inc.
  [19:13:05,968,GPA] Java VM: Java HotSpot(TM) Server VM 1.3.1_01,Sun Microsystems Inc.
  [19:13:05,978,GPA] OS-System: Linux 2.4.7-10,i386
  [19:13:05,989,GPA] JBoss Version : 3.0.0alpha(200111161633)
  [19:13:06,014,GPA] JBoss start time : Fri Nov 16 19:13:03 PST 2001
  ...
     </pre></font>
  
  <p class="text">
     When the server is <em>mostly</em> started it should log a message like:
     <font size="-1"><pre class="output">
  [19:16:48,956,Default] JBoss 3.0.0alpha(200111161633) [RABBIT-HOLE] Started in 
0m:40s:844ms
     </pre></font>
  
  <p class="text">
     There could still be services deploying or other initialization going on,
     but for the most part the server is up and running now.
  
  <p class="text">
     A simple test would be to attempt to connect to the HTML JMX Console,
     which should show you the <em>Agent View</em> of the <em>MBeans</em> which
     are currently loaded in the server.  Todo this simple point your favorite
     web-browser at the <tt>http://<em>hostname</em>:8082</tt>, where
     <em>hostname</em> is the name of the host where you are running the server
     from.
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="Run_the_Testsuite">Run the Testsuite<a/>
  
  <p class="text">
     Before any changes are commited, the Testsuite <b>MUST</b> be run to
     ensure that such changes have not broken anything.  To help make it easy
     to run the testsuite, a <tt>run-testsuite</tt> target has been added to
     the build system.
  
  <p class="text">
     The <tt>run-testsuite</tt> target, will first compile the 
     <tt>testsuite</tt>, or if it has already compiled, simply ensure that
     it has done so completely.  Then it will start up
     <a href="http://www.junit.org";>JUnit</a> and run through the test cases.
  
  <p class="text">
     The testsuite requires that JBoss already be running, or else most if
     not all of the tests will fail.  It also assumes that it will connect to
     a server which as the default configuration.  If for example, the Naming
     services is not running on the default port of 1099, the tests which
     connect to the server via JNDI will fail.  To avoid these problems simply
     use the <tt>run-jboss</tt> target to start the server, then from another
     shell use the <tt>run-testsuite</tt> target.
  
  <p class="text">
     The output and analysis of the testsuite is rather comlicated and out of
     the scope of this document.
  
  <!--
     | Should provide some details on how to generate the reports, if they
     | need generation and where the user can point their brower to look at
     | them.
   -->
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <!-- ==================================================================== -->
  
  <p class="head">
     <a name="What_To_Do_Next">What To Do Next</a>
  
  <!-- picateam block --><table><tr><td><jsp:include page="/common/picateam.jsp" 
flush="true"/></td><td>
  
  <p class="text">
     Well, be sure to give yourself a nice pat on the back for getting this far.
     As for what you will do next, only you really know that.  We suggest 
     reading over the <a href="buildsystem.jsp">Build&nbsp;System&nbsp;Guide</a>,
     the <a href="buildsystem-faq.jsp">Build&nbsp;System&nbsp;FAQ</a> to get 
     the full view of the build system.
  
  <p class="text">
     If you are looking for other non-build system developer docs, you can 
     <em>probably</em> find them on the 
     <a href="/developers">Developers Site</a>.
  
  <!-- end picateam block --></td></tr></table>
  
  <p class="text">
     Be sure to check out the 
     <a href="http://sourceforge.net/projects/jboss";>Project Info</a>
     for JBoss on <a href="http://sourceforge.net";>SourceForge</a>, as well
     as the <a href="contrib.jsp">Contributors Guide</a> too.
  
  <p class="text">
     Good luck, happy coding and remember we love you!
  
  <p class="text">
     <a href="#Contents">[Contents]</a>
  
  <jsp:include page="/developers/navigation.jsp" flush="true"/>
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to