<?xml version="1.0" encoding="utf-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="serif,Symbol,ZapfDingbats" font-size="11pt" text-align="justify" line-height="1.4" font-selection-strategy="character-by-character" line-height-shift-adjustment="disregard-shifts" language="en"><fo:layout-master-set><fo:simple-page-master master-name="blank" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body display-align="center" margin-bottom="15mm" margin-top="10mm"/><fo:region-before region-name="xsl-region-before-blank" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-blank" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-first" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-odd" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-even" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-first" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-odd" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-even" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-first" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-odd" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-even" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-first" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-odd" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-even" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-first" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-odd" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-even" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm - 0pc" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-first" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-odd" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-even" page-width="8.5in" page-height="11in" margin-top="5mm" margin-bottom="0mm" margin-left="18mm" margin-right="18mm"><fo:region-body margin-bottom="15mm" margin-top="10mm" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:page-sequence-master master-name="titlepage"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="titlepage-first" page-position="first"/><fo:conditional-page-master-reference master-reference="titlepage-odd" odd-or-even="odd"/><fo:conditional-page-master-reference master-reference="titlepage-even" odd-or-even="even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="lot"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="lot-first" page-position="first"/><fo:conditional-page-master-reference master-reference="lot-odd" odd-or-even="odd"/><fo:conditional-page-master-reference master-reference="lot-even" odd-or-even="even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="front"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="front-first" page-position="first"/><fo:conditional-page-master-reference master-reference="front-odd" odd-or-even="odd"/><fo:conditional-page-master-reference master-reference="front-even" odd-or-even="even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="body"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="body-first" page-position="first"/><fo:conditional-page-master-reference master-reference="body-odd" odd-or-even="odd"/><fo:conditional-page-master-reference master-reference="body-even" odd-or-even="even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="back"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="back-first" page-position="first"/><fo:conditional-page-master-reference master-reference="back-odd" odd-or-even="odd"/><fo:conditional-page-master-reference master-reference="back-even" odd-or-even="even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="index"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="index-first" page-position="first"/><fo:conditional-page-master-reference master-reference="index-odd" odd-or-even="odd"/><fo:conditional-page-master-reference master-reference="index-even" odd-or-even="even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master></fo:layout-master-set><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="d0e1"><fox:label>JBoss Development Process Guide</fox:label></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="toc...d0e1"><fox:label>Table of Contents</fox:label></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="preface"><fox:label>Preface</fox:label></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="overview"><fox:label>Chapter 1. Overview</fox:label><fox:outline internal-destination="d0e22"><fox:label>1.1. Background</fox:label></fox:outline><fox:outline internal-destination="d0e46"><fox:label>1.2. JEMS integration milestones</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="tracking"><fox:label>Chapter 2. JBoss Issue Tracking</fox:label><fox:outline internal-destination="d0e88"><fox:label>2.1. Creating a new Project</fox:label></fox:outline><fox:outline internal-destination="d0e100"><fox:label>2.2. Creating Release Notes</fox:label><fox:outline internal-destination="d0e114"><fox:label>2.2.1. Adding Issues to Release Notes</fox:label></fox:outline><fox:outline internal-destination="d0e119"><fox:label>2.2.2. Generating Release Notes</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e149"><fox:label>2.3. Issues</fox:label><fox:outline internal-destination="d0e152"><fox:label>2.3.1. Types</fox:label></fox:outline><fox:outline internal-destination="d0e172"><fox:label>2.3.2. Priorities</fox:label></fox:outline><fox:outline internal-destination="d0e205"><fox:label>2.3.3. Estimates and Due Dates</fox:label></fox:outline><fox:outline internal-destination="d0e210"><fox:label>2.3.4. Affects Checkboxes</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e228"><fox:label>2.4. Managing Container Projects</fox:label></fox:outline><fox:outline internal-destination="d0e243"><fox:label>2.5. Project Source Repository and Builds</fox:label></fox:outline><fox:outline internal-destination="d0e248"><fox:label>2.6. Testsuites</fox:label></fox:outline><fox:outline internal-destination="d0e253"><fox:label>2.7. Dependency Tracking with JIRA</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="structure"><fox:label>Chapter 3. Project Structure</fox:label></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="build-system"><fox:label>Chapter 4. Build System Requirements</fox:label><fox:outline internal-destination="d0e309"><fox:label>4.1. Definitions</fox:label></fox:outline><fox:outline internal-destination="d0e343"><fox:label>4.2. Goals</fox:label><fox:outline internal-destination="d0e346"><fox:label>4.2.1. Project Decomposition</fox:label></fox:outline><fox:outline internal-destination="d0e351"><fox:label>4.2.2. Dependency Management</fox:label></fox:outline><fox:outline internal-destination="d0e356"><fox:label>4.2.3. Simplified Build Scripts</fox:label></fox:outline><fox:outline internal-destination="d0e361"><fox:label>4.2.4. Tool Compatibility</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e366"><fox:label>4.3. Requirements</fox:label><fox:outline internal-destination="d0e369"><fox:label>4.3.1. Declarative Dependencies</fox:label></fox:outline><fox:outline internal-destination="d0e378"><fox:label>4.3.2. Automated Updates</fox:label></fox:outline><fox:outline internal-destination="d0e393"><fox:label>4.3.3. Source Artifact Overrides</fox:label></fox:outline><fox:outline internal-destination="d0e402"><fox:label>4.3.4. Dependency Version Reconciliation</fox:label></fox:outline><fox:outline internal-destination="d0e420"><fox:label>4.3.5. Component Builds</fox:label></fox:outline><fox:outline internal-destination="d0e425"><fox:label>4.3.6. Extensibility</fox:label></fox:outline><fox:outline internal-destination="d0e430"><fox:label>4.3.7. Incremental Builds</fox:label></fox:outline><fox:outline internal-destination="d0e435"><fox:label>4.3.8. Artifact JDK Version</fox:label></fox:outline><fox:outline internal-destination="d0e440"><fox:label>4.3.9. Line-Precise Error Reporting</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e445"><fox:label>4.4. Use Cases</fox:label><fox:outline internal-destination="d0e448"><fox:label>4.4.1. Intial Project Checkout &amp; Build</fox:label></fox:outline><fox:outline internal-destination="d0e457"><fox:label>4.4.2. Source Override</fox:label></fox:outline><fox:outline internal-destination="d0e468"><fox:label>4.4.3. JBossCache Example</fox:label></fox:outline><fox:outline internal-destination="d0e477"><fox:label>4.4.4. Valid Commit</fox:label></fox:outline><fox:outline internal-destination="d0e482"><fox:label>4.4.5. Broken Build: Interface Changes</fox:label></fox:outline></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="cvsaccess"><fox:label>Chapter 5. CVS Access for JBoss Sources</fox:label><fox:outline internal-destination="d0e497"><fox:label>5.1. Obtaining a CVS Client</fox:label></fox:outline><fox:outline internal-destination="d0e512"><fox:label>5.2. Anonymous CVS Access</fox:label></fox:outline><fox:outline internal-destination="d0e553"><fox:label>5.3. Committer Access to CVS and JIRA</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="coding"><fox:label>Chapter 6. Coding Conventions</fox:label><fox:outline internal-destination="d0e608"><fox:label>6.1. Templates</fox:label><fox:outline internal-destination="d0e621"><fox:label>6.1.1. Importing Templates into the Eclipse IDE</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e635"><fox:label>6.2. Some more general guidelines</fox:label></fox:outline><fox:outline internal-destination="d0e648"><fox:label>6.3. JavaDoc recommendations</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="logging"><fox:label>Chapter 7. Logging Conventions</fox:label><fox:outline internal-destination="d0e683"><fox:label>7.1. Obtaining a Logger</fox:label></fox:outline><fox:outline internal-destination="d0e694"><fox:label>7.2. Logging Levels</fox:label></fox:outline><fox:outline internal-destination="d0e719"><fox:label>7.3. Log4j Configuration</fox:label><fox:outline internal-destination="d0e730"><fox:label>7.3.1. Separating Application Logs</fox:label></fox:outline><fox:outline internal-destination="d0e749"><fox:label>7.3.2. Specifying appenders and filters</fox:label></fox:outline><fox:outline internal-destination="d0e764"><fox:label>7.3.3. Logging to a Seperate Server</fox:label></fox:outline><fox:outline internal-destination="d0e871"><fox:label>7.3.4. Key JBoss Subsystem Categories</fox:label></fox:outline><fox:outline internal-destination="d0e959"><fox:label>7.3.5. Redirecting Category Output</fox:label></fox:outline><fox:outline internal-destination="d0e979"><fox:label>7.3.6. Using your own log4j.xml file - class loader scoping</fox:label></fox:outline><fox:outline internal-destination="d0e1034"><fox:label>7.3.7. Using your own log4j.properties file - class loader scoping</fox:label></fox:outline><fox:outline internal-destination="d0e1133"><fox:label>7.3.8. Using your own log4j.xml file - Log4j RepositorySelector</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1175"><fox:label>7.4. JDK java.util.logging</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="testsuite"><fox:label>Chapter 8. JBoss Test Suite</fox:label><fox:outline internal-destination="d0e1254"><fox:label>8.1. How To Run the JBoss Testsuite</fox:label><fox:outline internal-destination="d0e1259"><fox:label>8.1.1. Build JBoss</fox:label></fox:outline><fox:outline internal-destination="d0e1274"><fox:label>8.1.2. Build and Run the Testsuite</fox:label></fox:outline><fox:outline internal-destination="d0e1293"><fox:label>8.1.3. Running One Test at a Time</fox:label></fox:outline><fox:outline internal-destination="d0e1311"><fox:label>8.1.4. Clustering Tests Configuration</fox:label></fox:outline><fox:outline internal-destination="d0e1324"><fox:label>8.1.5. Viewing the Results</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1335"><fox:label>8.2. Testsuite Changes</fox:label><fox:outline internal-destination="d0e1343"><fox:label>8.2.1. Targets</fox:label></fox:outline><fox:outline internal-destination="d0e1402"><fox:label>8.2.2. Files</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1460"><fox:label>8.3. Functional Tests</fox:label><fox:outline internal-destination="d0e1503"><fox:label>8.3.1. Integration with Testsuite</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1566"><fox:label>8.4. Adding a test requiring a custom JBoss Configuration</fox:label></fox:outline><fox:outline internal-destination="d0e1622"><fox:label>8.5. Tests requiring Deployment Artifacts</fox:label></fox:outline><fox:outline internal-destination="d0e1648"><fox:label>8.6. JUnit for different test configurations</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="support"><fox:label>Chapter 9. Support, Sales Force and Patch Management</fox:label><fox:outline internal-destination="d0e1676"><fox:label>9.1. An overview of the Support Process</fox:label></fox:outline><fox:outline internal-destination="d0e1693"><fox:label>9.2. Patch Management</fox:label></fox:outline><fox:outline internal-destination="d0e1702"><fox:label>9.3. Monitoring the Support Process</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="statusreport"><fox:label>Chapter 10. Weekly Status Reports</fox:label></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="documents"><fox:label>Chapter 11. Documentation and the Documentation Process</fox:label><fox:outline internal-destination="d0e1745"><fox:label>11.1. JBoss Documentation</fox:label></fox:outline><fox:outline internal-destination="d0e1776"><fox:label>11.2. Producing and Maintaining Quality Documentation</fox:label><fox:outline internal-destination="d0e1781"><fox:label>11.2.1. Responsibilities</fox:label><fox:outline internal-destination="d0e1784"><fox:label>11.2.1.1. The product team</fox:label></fox:outline><fox:outline internal-destination="d0e1802"><fox:label>11.2.1.2. The documentation team</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1824"><fox:label>11.2.2. Product documentation review</fox:label></fox:outline><fox:outline internal-destination="d0e1829"><fox:label>11.2.3. Keep the documentation up-to-date</fox:label></fox:outline><fox:outline internal-destination="d0e1847"><fox:label>11.2.4. Articles and books</fox:label></fox:outline><fox:outline internal-destination="d0e1854"><fox:label>11.2.5. Authoring JBoss Documentation using DocBook</fox:label></fox:outline></fox:outline></fox:outline><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="titlepage" initial-page-number="1" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="d0e1"><fo:block><fo:block><fo:block><fo:table table-layout="fixed" width="175mm"><fo:table-column column-width="175mm"/><fo:table-body><fo:table-row><fo:table-cell text-align="center"><fo:block font-family="Helvetica" font-size="22pt" padding-before="10mm">JBoss Development Process Guide</fo:block><fo:block font-family="Helvetica" font-size="18pt" padding-before="10mm"/><fo:block font-family="Helvetica" font-size="12pt" padding="10mm">2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block/></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" format="i" master-reference="lot" language="en" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>JBoss Development Process Guide</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>JBoss Development Process Guide</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" id="toc...d0e1"><fo:block><fo:block><fo:block space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="0pc" font-size="17.28pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats">Table of Contents</fo:block></fo:block><fo:block/></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="preface">Preface</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="preface"><fo:page-number-citation ref-id="preface"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="overview">1.  Overview</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="overview"><fo:page-number-citation ref-id="overview"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.overview" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e22">1.1.  Background</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e22"><fo:page-number-citation ref-id="d0e22"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e46">1.2.  JEMS integration milestones</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e46"><fo:page-number-citation ref-id="d0e46"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="tracking">2.  JBoss Issue Tracking</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="tracking"><fo:page-number-citation ref-id="tracking"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.tracking" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e88">2.1.  Creating a new Project</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e88"><fo:page-number-citation ref-id="d0e88"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e100">2.2.  Creating Release Notes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e100"><fo:page-number-citation ref-id="d0e100"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e100" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e114">2.2.1.  Adding Issues to Release Notes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e114"><fo:page-number-citation ref-id="d0e114"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e119">2.2.2.  Generating Release Notes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e119"><fo:page-number-citation ref-id="d0e119"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e149">2.3.  Issues</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e149"><fo:page-number-citation ref-id="d0e149"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e149" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e152">2.3.1.  Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e152"><fo:page-number-citation ref-id="d0e152"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e172">2.3.2.  Priorities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e172"><fo:page-number-citation ref-id="d0e172"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e205">2.3.3.  Estimates and Due Dates</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e205"><fo:page-number-citation ref-id="d0e205"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e210">2.3.4.  Affects Checkboxes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e210"><fo:page-number-citation ref-id="d0e210"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e228">2.4.  Managing Container Projects</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e228"><fo:page-number-citation ref-id="d0e228"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e243">2.5.  Project Source Repository and Builds</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e243"><fo:page-number-citation ref-id="d0e243"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e248">2.6.  Testsuites</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e248"><fo:page-number-citation ref-id="d0e248"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e253">2.7.  Dependency Tracking with JIRA</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e253"><fo:page-number-citation ref-id="d0e253"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="structure">3.  Project Structure</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="structure"><fo:page-number-citation ref-id="structure"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="build-system">4.  Build System Requirements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="build-system"><fo:page-number-citation ref-id="build-system"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.build-system" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e309">4.1.  Definitions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e309"><fo:page-number-citation ref-id="d0e309"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e343">4.2.  Goals</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e343"><fo:page-number-citation ref-id="d0e343"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e343" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e346">4.2.1.  Project Decomposition</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e346"><fo:page-number-citation ref-id="d0e346"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e351">4.2.2.  Dependency Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e351"><fo:page-number-citation ref-id="d0e351"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e356">4.2.3.  Simplified Build Scripts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e356"><fo:page-number-citation ref-id="d0e356"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e361">4.2.4.  Tool Compatibility</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e361"><fo:page-number-citation ref-id="d0e361"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e366">4.3.  Requirements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e366"><fo:page-number-citation ref-id="d0e366"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e366" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e369">4.3.1.  Declarative Dependencies</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e369"><fo:page-number-citation ref-id="d0e369"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e378">4.3.2.  Automated Updates</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e378"><fo:page-number-citation ref-id="d0e378"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e393">4.3.3.  Source Artifact Overrides</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e393"><fo:page-number-citation ref-id="d0e393"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e402">4.3.4.  Dependency Version Reconciliation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e402"><fo:page-number-citation ref-id="d0e402"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e420">4.3.5.  Component Builds</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e420"><fo:page-number-citation ref-id="d0e420"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e425">4.3.6.  Extensibility</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e425"><fo:page-number-citation ref-id="d0e425"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e430">4.3.7.  Incremental Builds</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e430"><fo:page-number-citation ref-id="d0e430"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e435">4.3.8.  Artifact JDK Version</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e435"><fo:page-number-citation ref-id="d0e435"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e440">4.3.9.  Line-Precise Error Reporting</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e440"><fo:page-number-citation ref-id="d0e440"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e445">4.4.  Use Cases</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e445"><fo:page-number-citation ref-id="d0e445"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e445" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e448">4.4.1.  Intial Project Checkout &amp; Build</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e448"><fo:page-number-citation ref-id="d0e448"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e457">4.4.2.  Source Override</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e457"><fo:page-number-citation ref-id="d0e457"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e468">4.4.3.  JBossCache Example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e468"><fo:page-number-citation ref-id="d0e468"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e477">4.4.4.  Valid Commit</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e477"><fo:page-number-citation ref-id="d0e477"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e482">4.4.5.  Broken Build: Interface Changes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e482"><fo:page-number-citation ref-id="d0e482"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="cvsaccess">5.  CVS Access for JBoss Sources</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="cvsaccess"><fo:page-number-citation ref-id="cvsaccess"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.cvsaccess" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e497">5.1.  Obtaining a CVS Client</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e497"><fo:page-number-citation ref-id="d0e497"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e512">5.2.  Anonymous CVS Access</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e512"><fo:page-number-citation ref-id="d0e512"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e553">5.3.  Committer Access to CVS and JIRA</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e553"><fo:page-number-citation ref-id="d0e553"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="coding">6.  Coding Conventions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="coding"><fo:page-number-citation ref-id="coding"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.coding" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e608">6.1.  Templates</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e608"><fo:page-number-citation ref-id="d0e608"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e608" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e621">6.1.1.  Importing Templates into the Eclipse IDE</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e621"><fo:page-number-citation ref-id="d0e621"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e635">6.2.  Some more general guidelines</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e635"><fo:page-number-citation ref-id="d0e635"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e648">6.3.  JavaDoc recommendations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e648"><fo:page-number-citation ref-id="d0e648"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="logging">7.  Logging Conventions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="logging"><fo:page-number-citation ref-id="logging"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.logging" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e683">7.1.  Obtaining a Logger</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e683"><fo:page-number-citation ref-id="d0e683"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e694">7.2.  Logging Levels</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e694"><fo:page-number-citation ref-id="d0e694"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e719">7.3.  Log4j Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e719"><fo:page-number-citation ref-id="d0e719"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e719" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e730">7.3.1.  Separating Application Logs</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e730"><fo:page-number-citation ref-id="d0e730"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e749">7.3.2.  Specifying appenders and filters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e749"><fo:page-number-citation ref-id="d0e749"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e764">7.3.3.  Logging to a Seperate Server</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e764"><fo:page-number-citation ref-id="d0e764"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e871">7.3.4.  Key JBoss Subsystem Categories</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e871"><fo:page-number-citation ref-id="d0e871"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e959">7.3.5.  Redirecting Category Output</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e959"><fo:page-number-citation ref-id="d0e959"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e979">7.3.6.  Using your own log4j.xml file - class loader scoping</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e979"><fo:page-number-citation ref-id="d0e979"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1034">7.3.7.  Using your own log4j.properties file - class loader scoping</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1034"><fo:page-number-citation ref-id="d0e1034"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1133">7.3.8.  Using your own log4j.xml file - Log4j RepositorySelector</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1133"><fo:page-number-citation ref-id="d0e1133"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1175">7.4.  JDK java.util.logging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1175"><fo:page-number-citation ref-id="d0e1175"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="testsuite">8.  JBoss Test Suite</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="testsuite"><fo:page-number-citation ref-id="testsuite"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.testsuite" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1254">8.1.  How To Run the JBoss Testsuite</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1254"><fo:page-number-citation ref-id="d0e1254"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1254" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1259">8.1.1.  Build JBoss</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1259"><fo:page-number-citation ref-id="d0e1259"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1274">8.1.2.  Build and Run the Testsuite</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1274"><fo:page-number-citation ref-id="d0e1274"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1293">8.1.3.  Running One Test at a Time</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1293"><fo:page-number-citation ref-id="d0e1293"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1311">8.1.4.  Clustering Tests Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1311"><fo:page-number-citation ref-id="d0e1311"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1324">8.1.5.  Viewing the Results</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1324"><fo:page-number-citation ref-id="d0e1324"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1335">8.2.  Testsuite Changes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1335"><fo:page-number-citation ref-id="d0e1335"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1335" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1343">8.2.1.  Targets</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1343"><fo:page-number-citation ref-id="d0e1343"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1402">8.2.2.  Files</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1402"><fo:page-number-citation ref-id="d0e1402"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1460">8.3.  Functional Tests</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1460"><fo:page-number-citation ref-id="d0e1460"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1460" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1503">8.3.1.  Integration with Testsuite</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1503"><fo:page-number-citation ref-id="d0e1503"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1566">8.4.  Adding a test requiring a custom JBoss Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1566"><fo:page-number-citation ref-id="d0e1566"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1622">8.5.  Tests requiring Deployment Artifacts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1622"><fo:page-number-citation ref-id="d0e1622"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1648">8.6.  JUnit for different test configurations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1648"><fo:page-number-citation ref-id="d0e1648"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="support">9.  Support, Sales Force and Patch Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="support"><fo:page-number-citation ref-id="support"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.support" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1676">9.1.  An overview of the Support Process</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1676"><fo:page-number-citation ref-id="d0e1676"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1693">9.2.  Patch Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1693"><fo:page-number-citation ref-id="d0e1693"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1702">9.3.  Monitoring the Support Process</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1702"><fo:page-number-citation ref-id="d0e1702"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="statusreport">10.  Weekly Status Reports</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="statusreport"><fo:page-number-citation ref-id="statusreport"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="documents">11.  Documentation and the Documentation Process</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="documents"><fo:page-number-citation ref-id="documents"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.documents" start-indent="24pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1745">11.1.  JBoss Documentation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1745"><fo:page-number-citation ref-id="d0e1745"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1776">11.2.  Producing and Maintaining Quality Documentation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1776"><fo:page-number-citation ref-id="d0e1776"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1776" start-indent="48pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1781">11.2.1.  Responsibilities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1781"><fo:page-number-citation ref-id="d0e1781"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1781" start-indent="72pt"><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1784">11.2.1.1.  The product team</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1784"><fo:page-number-citation ref-id="d0e1784"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1802">11.2.1.2.  The documentation team</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1802"><fo:page-number-citation ref-id="d0e1802"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1824">11.2.2.  Product documentation review</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1824"><fo:page-number-citation ref-id="d0e1824"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1829">11.2.3.  Keep the documentation up-to-date</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1829"><fo:page-number-citation ref-id="d0e1829"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1847">11.2.4.  Articles and books</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1847"><fo:page-number-citation ref-id="d0e1847"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1854">11.2.5.  Authoring JBoss Documentation using DocBook</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1854"><fo:page-number-citation ref-id="d0e1854"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="front" language="en" format="i" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Preface</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Preface</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="preface"><fo:block><fo:block><fo:block margin-left="0pc" font-size="24.8832pt" font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="11pt" space-before.minimum="8.8pt" space-before.maximum="13.2pt" hyphenate="false" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Preface</fo:block></fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      JBoss does not follow to the letter any of the established development 
      methodologies. JBoss borrows ideas, learns from experience and continuously evolves and adapts its process 
      to the dynamics of a largely distributed, highly motivated, and talented team.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      This document explains the background and walks through the tools and procedures that are currently used by JBoss for project management and quality assurance.
    </fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Overview</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Overview</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="overview"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">1</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Overview</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block id="d0e22"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">1.1. Background</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">1.1. Background</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      The JBoss development process reflects the company <fo:inline font-style="italic">core values</fo:inline>,which incorporate the spirit of open source, 
      individuality, creativity, hard work and dedication. 
      The commitment to technology and innovation comes first, after which decisions can be based on business, then competition.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      A typical JBoss project enjoys active support by the open source community. The ongoing collaboration within the community, 
      naturally validates the viability of the project and promotes practical innovation. 
      This process leads to a wide grassroots adoption of the technology in enterprise Java applications.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      While community support is the key factor for the widespread adoption of JBoss technology, there are other factors that 
      lead to its successful commercialization, such as return on investment (ROI) and total cost of ownership (TOC). They require 
      JBoss to offer products with strong brand, long term viability, and low maintenance costs. Companies that rely on
      JBoss products should be able to easily hire expertise on demand or educate existing engineering resources. They should also feel comfortable
      that the market share and lifespan of these products will protect their investments in the long run.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      The dilemma posed to the JBoss development process is how to enable a sound business model around sustainable and supportable 
      products, without disrupting the fast pased technology innovation. The traditional process of gathering requirements from top customers, 
      analysing, architecting, scheduling and building software does not work in the JBoss realm. 
      It ignores the community element and conflicts with the principle that technology comes first.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      On the other hand great technology does not necessarily lend itself to commercialization directly. 
      Professional marketing research is needed to effectively determine the best shape and form to position a technology. 
      It is frequently placed as a building block of a broader offering targeted at identified market segments.
      Ideally it should be possible to "package" technology into products on demand.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      To allow harmony between business and technology, JBoss defines a simple and effective interface between the two.
      The interface is introduced in the form of integration milestones. At certain points of time, pre-announced well in advance,
      stable versions of JBoss projects are selected, integrated, tested and benchmarked in a coordinated effort. 
      The result is an integrated Middleware stack that is referred to as the JBoss Enterprise Middleware System (JEMS). JEMS is not 
      a single product but a technology stack that can be used for packaging marketable products.  
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      While core JBoss projects evolve and release versions at their own pace, stable versions are regularly merged into
      JEMS to fuel its continuous growth as a comprehensive platform. 
      Major JEMS versions are spaced out at about 12 months with intermediate milestones on a quarterly basis. 
      This allows sufficient time for the industry to absorb the new features and build a self-supporting ecosystem. 
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      For example the JEMS 5.0 milestones were announced in December of 2004. The first milestone - JEMS 5.0 Alpha is targeted for Q1Y05. 
      It will introduce a standards based POJO Container, which allows a simplified programming model based on the new EJB 3 standard APIs.
      JBoss Cache will be one of the projects integrated in JEMS 5 Alpha. JBossCache has three pulblic releases planned in the same timeframe
      - 1.2.1, 1.2.2 and 1.3. Only one of them will be picked for integration in JEMS 5 Alpha. 
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      The second milestone - JEMS 5.0 Beta is targeted for Q2Y05 and will be the first attempt at a complete integration of core JBoss projects
      on top of a new JBoss MicroContainer. The JEMS 5.0 Final milestone in Q3Y05 will complete the development cycle by presenting an enterprise grade
      middleware stack, which is certified and fully supported by JBoss and its authorized partners. Any subset of JEMS 5 could be 
      extracted and deployed in production environment, because its components will have been thoroughly tested to work together and perform well. 
    </fo:block></fo:block><fo:block id="d0e46"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">1.2. JEMS integration milestones</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">1.2. JEMS integration milestones</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      The JEMS milestones have minimal impact on the progress of the individual JBoss projects. Their purpose is to set expectations for the 
      timing of the integration phases.
      The process itself is controlled and executed by the QA team in collaboration with each project development team.
      There are several phases in the development cycle between JEMS milestones. 
      <fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e51" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e52"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Feature planning.</fo:inline> 
          This is the first phase in a JEMS integration cycle and normally lasts a few weeks. 
          It is an open planning excersize between QA and project leads about the features that should be available in the next JEMS version 
          (e.g. JEMS 5.0 Alpha).
          During this phase each project lead proposes the version of their project (e.g. JBoss Remoting 1.0) that should be integrated in JEMS 
          and announces its key features. QA will have minimal input on the feature planning, but will have a say whether or not an implementation
          has acceptable quality when it is released.
          Cross project dependencies are identified throughout the discussion and they can result in additional feature requests 
          for a given project version.
          Ideally the discussion ends with a commonly agreed matrix of projects versions, features and interdependencies.
          Differences are normally mitigated by the QA team but issues could escalate higher in the management chain.
          The QA team also sets the acceptance criteria for each project version and the latest date by which the targeted project version should be handed
          over for integration. If a project version is not released by
          this date or it does not meet the acceptance criteria, QA has the option to drop the project version 
          and use an older version or find another alternative to minimize the negative impact on JEMS overall. 
        </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e56"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Scheduling.</fo:inline> 
          Based on the project release dates and interdependencies, the QA team prepares estimates for the amount of work required for 
          testing, benchmarking and documenting the integration between participating projects. Next, the QA team builds out a task schedule that
          validates whether the planned JEMS release date from phase one is realistic.
          Individual tasks in the schedule are sized 2-4 days to allow enough level of detail that would
          reveal ommissions made during the first phase. If adjustments need to be made the QA team opens a brief discussion with the project leads 
          to decide whether some features need to be dropped or the deadlines can be moved out within reason.
        </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e60"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Accepting project versions for integration.</fo:inline> 
           At this stage all agreed upon project versions are handed over to QA for verification. Each one is examined to verify if it passes the 
           acceptance criteria set forth early in the iteration. The process can take up to 2 weeks to allow for minor fixes. 
           Acceptance criteria will vary depending on how close the JEMS 
           milestone is to a production release. Earlier milestones will have less stringent requirements on documentation and training material.
           Projects that cannot pass the verification are removed from the JEMS milestone.
           In this case the QA team will find a fallback solution, which potentially includes using an older certified version of the project 
           in question. Dependent projects will have to readjust accordingly. 
        </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e64"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Writing integration test plans.</fo:inline> 
          For the stack of project versions that passed the acceptance criteria, QA develops a more comrehensive suite of integration tests.
          It covers complex scenarios across multiple projects that closely resemble realistic usage patterns. Tests that fail are addressed 
          either by the corresponding project developers or QA. It is preferable for project teams to be available on a short notice for fixing 
          bugs and quickly releasing minor incremental versions to be merged back in the JEMS stack. Versions contributed to JEMS 
          at this phase should only include fixes to issues raised or confirmed by QA. These versions should NOT be based on the latest 
          development code branch. In cases when bug fixes are not provided in a timely manner or there are risks of missing the JEMS deadlines,
          QA has the option to find an alternative solution. This includes reverting back to an earlier certified project version. 
        </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e68"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Benchmarking.</fo:inline> 
          After the functionality of the projects in JEMS is confirmed, QA executes a number of benchmarking plans. They are used to compare 
          the performance of the new version to the previous one and also establish baseline metrics for new features that will be tested again
          in future versions.
          Limited code modification and configuration changes can be made to tune the JEMS stack for better performance and reliability.    
        </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e72"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Documenting.</fo:inline> 
          Basic end user documentation should already be available with each project at the time its handed over to QA.
          However additional documentation can be added such as integration blueprints, configuration scenarios, tuning tips, 
          performance metrics and others.
        </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e76"><fo:list-item-label end-indent="label-end()"><fo:block>7.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Certification.</fo:inline>
          When all testsuites pass and the best performance numbers are achieved within the time constraints,
          QA certifies an internal JEMS release for several main platforms (e.g. Linux/Intel, Windows/Intel). 
          This internal release becomes available for a limited time to interested JBoss partners who are interested to certify on their specific platforms (e.g. HP/UX, Solaris/Sparc).
          Finally QA cuts off and publishes a matrix of platforms where the JEMS versions is certified by JBoss or an authorized partner. 
          Other certified platforms can be added at a later point.
          This concludes the JEMS iteration and from this point on, various products can be packaged and marketed based on the certified JEMS components.
        </fo:block></fo:list-item-body></fo:list-item></fo:list-block>
    </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>JBoss Issue Tracking</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>JBoss Issue Tracking</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="tracking"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">2</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">JBoss Issue Tracking</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JBoss utilizes JIRA for product lifecycle tracking. It is used
  during the requirements gathering, task scheduling, QA and
  maintenance stages of a product lifespan.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JIRA is an overall excellent issue tracking system. However as
  of version 3.0 Enterprise it does not offer sophisticated project
  planning and tracking functionality such as calculating critical
  path, reflecting task dependencies, resolving scheduling conflicts,
  and resource calendar. These shortcoming can be partially mitigated
  by splitting development into short iterations (1-2 months) in order
  to reactively manage diviations from the base line schedule.
  </fo:block><fo:block id="d0e88"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.1. Creating a new Project</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.1. Creating a new Project</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To begin the development of a new JBoss project, it needs to
    be registered in the project management system - JIRA. To do that
    you need to contact a <fo:basic-link external-destination="http://jira.jboss.com/jira/secure/Administrators.jspa">JIRA
    Administrator</fo:basic-link><fo:inline hyphenate="false"> [http://jira.jboss.com/jira/secure/Administrators.jspa]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the project is created, you will need to create a
    version label for the first (or next) production release. Under
    this release there will be several "blocking" tasks such as
    requirements gathering, coding, documentation, training material
    and QA. As a best practice issues should be only closed by their
    original reporter.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In addition to the production release there you will need to
    create versions for the intermediate releases at the end of each
    iteration. See the project named "README 1st - JBoss Project
    Template" for a starting point.</fo:block></fo:block><fo:block id="d0e100"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.2. Creating Release Notes</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.2. Creating Release Notes</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Release Notes for a product version are generated
    automatically by the Project Management System (JIRA) and
    additionally edited manually when necessary.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To mazimize the value of the automatically generated Release
    Notes and minimize the manual work, the following giudelines are
    in place:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e107" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e108"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Use concise but descriptive issue
      names</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e111"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Open the right kind of issue.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="d0e114"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.2.1. Adding Issues to Release Notes</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.2.1. Adding Issues to Release Notes</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order for an issue to appear in the release notes for a
      given version it needs to have its field "Fix Version/s" set to
      the given version. Usually an issue affects only one particular
      version and it is fixed within that version. Sometimes however
      an issue affects multiple versions and it is addressed for each
      one of them. In the latter case the "Fix Version/s" fields comes
      handy.</fo:block></fo:block><fo:block id="d0e119"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.2.2. Generating Release Notes</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.2.2. Generating Release Notes</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e122" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e123"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Go to the project home page. For example <fo:basic-link external-destination="http://jira.jboss.com/jira/browse/JBTPL">the Portal
	project</fo:basic-link><fo:inline hyphenate="false"> [http://jira.jboss.com/jira/browse/JBTPL]</fo:inline>.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e128"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Click on <fo:inline font-style="italic">Release Notes</fo:inline></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e132"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Pick the version you are intereted in the
	<fo:inline font-style="italic">Please Select Version:</fo:inline> drop down menu.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e137"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Select whether you want HTML or Plain Text format
	in the <fo:inline font-style="italic">Please Select Style:</fo:inline> menu. The HTML
	version provides links next to each issue in the release notes
	report that can be followed for more details. The Text version
	places the issue ID (e.g. JBTPL-11) next to the release note,
	which can be also used to obtain issue details.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e142"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Click Create.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e144"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> You should see something similar to <fo:basic-link external-destination="http://jira.jboss.com/jira/secure/ReleaseNote.jspa?version=10014&amp;styleName=Html&amp;projectId=10010&amp;Create=Create">this</fo:basic-link><fo:inline hyphenate="false"> [http://jira.jboss.com/jira/secure/ReleaseNote.jspa?version=10014&amp;styleName=Html&amp;projectId=10010&amp;Create=Create]</fo:inline>.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="d0e149"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.3. Issues</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.3. Issues</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e152"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.3.1. Types</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.3.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e155" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e156"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Feature Request</fo:inline> - A new
	feature of the product, which has yet to be
	developed. Feature requests appear near the top of release
	notes. Blocker and Critical priorities mark the features
	that are appropriate to advertise in marketing material such
	as datasheets and sales presentations.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e160"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Patch</fo:inline> - can be used for
	performance enhancements, code refactoring and other
	optimization related tasks for existing
	functionality.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e164"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Bug</fo:inline> - a problem which impairs
	or prevents the functions of the product.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e168"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Task</fo:inline> - should be used if none
	of the other categories seem appropriate.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e172"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.3.2. Priorities</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.3.2. Priorities</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JIRA offers voting mechanism that helps determine the
      number of people asking for a task as well as who these people
      are. JBoss Project Leads consult these votes in order to
      schedule tasks. All other developers in a project coordinate
      their time and tasks with the project lead. A select number of
      stakeholders have overriding power for task priorities. The
      JBoss CTO has the highest authority on development task
      priorities. When there is ambiguity on task priorities,
      contact your project lead or development manager.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Possible priorities are:
      <fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e179" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e180"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Blocker</fo:inline> - An issue (bug,
	feature, task) that blocks development and/or testing work,
	production could not run. An upcoming version that is
	affected by this issue cannot be released until it's
	addressed.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e184"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Critical</fo:inline> - An upcoming
	version that is affected by this issue cannot be released
	until it's addressed. A critical bug is one that crashes the
	application, causes loss of data or severe memory leak.
	</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e188"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Major</fo:inline> - A request that should
	be considered seriously but is not a show stopper.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e192"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Minor</fo:inline> - Minor loss of
	function, or other problem where easy workaround is
	present.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e196"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Optional</fo:inline> - The request should
	be considered desirable but is not an immediate
	necessity.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e200"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Trivial</fo:inline> - Cosmetic problem
	like misspelt words or misaligned text.</fo:block></fo:list-item-body></fo:list-item></fo:list-block>
      </fo:block></fo:block><fo:block id="d0e205"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.3.3. Estimates and Due Dates</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.3.3. Estimates and Due Dates</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Due dates are normally used for scheduling project
      versions. When entering issues, time estimates should be
      preferred to due dates. Issue due dates limit the project
      management software capability to level resources and optimize
      scheduling.</fo:block></fo:block><fo:block id="d0e210"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.3.4. Affects Checkboxes</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.3.4. Affects Checkboxes</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To support the updating of release notes and
       documentation, the Affects field offers several flags
       when creating or editing an issue.</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e215" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e216"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Documentation</fo:inline> - This flag
            indicates that project documentation (e.g., a reference
            guide or user guide, etc) requires changes resulting from this
            issue. </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e220"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Interactive Demo/Tutorial</fo:inline> 
            - Indicates an interactive demo
            or tutorial requires changes resulting from this
            issue.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e224"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-style="italic">Compatibility/Configuration</fo:inline>
            - Indicates that issue may affect compatibility or
            configuration with previous releases so they can be
            highlighted in the release notes overview
            section.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="d0e228"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.4. Managing Container Projects</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.4. Managing Container Projects</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Projects such as JBoss Application Server package components
    from several other projects such as JBoss Cache, Tomcat, JGroups,
    and Hibernate. To manage the development cycles between these
    projects the following guidelines apply:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e233" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e234"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>A projects that ships as a standalone product has its
      own entry as a JIRA Project. Examples include JBoss Cache,
      Hibernate, JBoss jBPM, etc. These projects have independent
      release cycles.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e236"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>A container project such as JBoss AS that packages
      other projects has a JIRA component for each one of them. For
      example the JBoss AS project includes the following components:
      JTA, JCA, Web Services, Hibernate service, JBoss Cache service,
      JBoss Web(Tomcat) service. There are two kinds of components:
      <fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e238" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e239"><fo:list-item-label end-indent="label-end()"><fo:block>a.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Components for composing projects that are developed
	within the container and have release cycles aligned with it
	(e.g. JTA, JCA)</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e241"><fo:list-item-label end-indent="label-end()"><fo:block>b.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Components for embedded projects that are integrated
	within the container, but are also offered standalone
	(e.g. Tomcat, Hibernate). These components track the
	integration tasks for the embedded service
	(e.g. Tomcat). Typically a release of the container is
	integrated with a stable version of the standalone
	project. For example JBoss 4.0.1 embeds Tomcat
	5.0.16.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e243"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.5. Project Source Repository and Builds</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.5. Project Source Repository and Builds</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The source code repository of a container project includes
    the full source for all composing components. For integrated
    components, the source repository includes integration source code
    and stable binaries of the related standalone projects. Building a
    container from source, compiles the source code for its composing
    parts as well as integration code, but it does not pull in the
    source for standalone projects.</fo:block></fo:block><fo:block id="d0e248"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.6. Testsuites</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.6. Testsuites</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A container testsuite includes the tests for all composing
    components as well as the integration tests for embedded
    compoenents. It does not include the tests that are part of the
    standalone testsuite for an integrated component. For example
    JBoss AS testsuite covers the HAR deployer, but it does not
    include tests from the standalone Hibernate project.</fo:block></fo:block><fo:block id="d0e253"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">2.7. Dependency Tracking with JIRA</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">2.7. Dependency Tracking with JIRA</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Container projects such as JBAS consist of components, some
    of which are integral to the container (such as CMP, IIOP) and
    others are based on external projects (MicroContainer,
    JBossCache).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For each container version and each component based on
    external project, there should be an integration tasks created in
    the container project. The task should specify which version of
    the external project the container component depends on (e.g. JB
    AS 4.0.1 depends on JBoss Cache 1.2). Both project leads need to
    be aware and agree on the dependency at the time the integration
    task is created.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When new issues are created against the dependent project
    version (JB Cache 1.2) related to the development of the container
    project version (JB AS 4.0.1), they should be linked to from the
    integration task. Example:
    http://jira.jboss.com/jira/browse/JBAS-56
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the dependent project version is released before the
    container project is (JB Cache released on Dec 10, while JB AS
    4.0.1 is not released until Dec 22), there should be a flexible
    mechanism to accomodate intermediary patches. One option is for
    the dependent project to maintain a separate branch
    (JBCache_1_2_JBAS_4_0_1) for the container integration. Another
    option is for the dependent project to apply patches against its
    main branch and release minor increments (JB Cache 1.2.0b).
    </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Project Structure</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Project Structure</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="structure"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">3</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Project Structure</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> As components of the Application Server mature into their own
  projects, it will become increasingly difficult to manage them as a
  part of the "jboss" project. They will have their own contributors,
  releases, components and libraries. Coordinating all of this effort
  in a single project is unscalable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">All of the existing modules of the AS should be extracted into
  their own projects.  Each project will have its own source
  repository and will integrate with the AS as an external
  dependency.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e271"><fo:block><fo:external-graphic src="images/project-repositories.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 3.1. Extraction of AS components into their own CVS modules.</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Individual projects produce multiple artifacts according to
  the needs of dependent projects.  For instance, JBossCache would
  produce a standalone artifact for use in lightweight containers.  It
  would also need to produce a SAR with a more extensive dependency
  set for use in the AS.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The AS project will aggregate its dependencies into multiple
  distributables (i.e., archived or InstallShield).  The AS project
  will also include the testsuite for integration tests.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The process for extracting projects from modules can be
  iterative.  However, it needs to start at the top of the dependency
  tree with the Common module and proceed downwards.  For example, in
  order to extract the Remoting project, all of the dependencies above
  it must be extracted and made available to the Remoting project as
  external libraries.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e281"><fo:block><fo:external-graphic src="images/extraction-phases.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 3.2. Example of Module Extraction Process</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This order is necessary to avoid circular dependencies.  </fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Build System Requirements</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Build System Requirements</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="build-system"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">4</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Build System Requirements</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> As components of the Application Server mature into their own
  projects, it will become increasingly difficult to manage them as a
  part of the "jboss" project. They will have their own contributors,
  releases, components and libraries. Coordinating all of this effort
  in a single project is simply not scalable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The obvious solution is to decouple these "super subprojects"
  from the main Application Server project. With respect to the
  application server, they will become external dependencies much like
  JGroups and Hibernate.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">However, splitting the Application Server into multiple
  projects presents new challenges and requires a fresh approach to
  the build system. Some of the issues which need addressing:

  <fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e296" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e297"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Continuous Integration -- Multiple parallel lines of
      development must be integrated at regular intervals. What was
      once accomplished by a cvs update and rebuild must now be done
      by other means.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e300"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Version Alignment -- Projects need the ability to manage
      their own dependencies.  However, the versions of these
      dependencies must align when projects are aggregated into the
      Application Server.
      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e303"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Source vs Binary Tradeoff -- A developer shouldn't have
      to checkout the source for all dependencies to build a given
      project. Likewise, it should be possible to checkout a
      dependency and quickly test modifications to that dependency
      with the project.
      </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
  </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> This document will define a Build System
  which will address the above issues.</fo:block><fo:block id="d0e309"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.1. Definitions</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.1. Definitions</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" provisional-distance-between-starts="2in" provisional-label-separation="0.25in"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-item-label end-indent="label-end()"><fo:block>Project</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> From the perspective of the build system, a project
	  is a directory containing source code which produces one or
	  more artifacts. A project may have dependencies on the
	  artifacts of other projects or third-party libraries.
	  </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-item-label end-indent="label-end()"><fo:block>Component</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> A source tree which exists only as a part of another
	  project. For example, JTA is a component of the application
	  server.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-item-label end-indent="label-end()"><fo:block>Dependency</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> A requirement that a library or artifact must
	  be available during compilation of a given project. This term
	  can also refer to the artifact or library
	  itself.
	  </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-item-label end-indent="label-end()"><fo:block>Artifact</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The compiled product of a project. Generally,
	  artifacts are JAR files. The Application Server project will
	  have a dependency on artifacts produced by the
	  MicroContainer project.  An artifact may be a JAR, SAR, or
	WAR.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-item-label end-indent="label-end()"><fo:block>Library</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> A JAR file which is not generated from
	  source. Many projects will have a dependency on the log4j
	  library.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e343"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.2. Goals</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.2. Goals</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e346"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.2.1. Project Decomposition</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.2.1. Project Decomposition</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A primary goal of the new build system is to support the
      decomposition of the JBoss Application Server source tree into
      multiple standalone projects.  It should be possible to checkout
      and build any project independently of any container projects.
      However, the build system should support integrated builds
      between dependent projects.  For instance, it should still be
      possible to build the application server and all of its
      subprojects with one invocation.</fo:block></fo:block><fo:block id="d0e351"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.2.2. Dependency Management</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.2.2. Dependency Management</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The new build system should simplify the way that
      thirdparty libraries are managed.  Specifically, the build
      system should allow projects to declare which versions of what
      dependencies they have.  The build system should be able to
      automatically download dependencies from an online
      repository.</fo:block></fo:block><fo:block id="d0e356"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.2.3. Simplified Build Scripts</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.2.3. Simplified Build Scripts</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Build scripts should be as declarative as possible, while
      still allowing for customization to an individual project's
      needs.  The inputs and outputs of a component should be clearly
      documented.</fo:block></fo:block><fo:block id="d0e361"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.2.4. Tool Compatibility</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.2.4. Tool Compatibility</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Any new build system needs to be compatible with major
      IDE's and associated tools used by developers.  At the very
      least, this contstrains project structure and build script
      implementations.  For example, it should be possible to execute
      a build target from Eclipse.</fo:block></fo:block></fo:block><fo:block id="d0e366"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3. Requirements</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3. Requirements</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e369"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.1. Declarative Dependencies</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.1. Declarative Dependencies</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Projects should be able to declare dependencies without
      being concerned with where those dependencies reside, or in what
      form. Dependency information is also needed for documentation
      and for use by IDE's, so it should be easy to automatically
      extract this information for use in other contexts.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A project should only need to declare its direct
      dependencies. Indirect dependencies should be included
      automatically.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Dependency information is stored and versioned along with
      the project source.  The dependencies themselves will be
      resolved by the automatic update feature below.</fo:block></fo:block><fo:block id="d0e378"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.2. Automated Updates</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.2. Automated Updates</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Multiple parallel lines of development need to be
      constantly integrated to tighten the feedback loop. As the
      number of projects grows, it will be impractical for each
      developer to update and build each project. The build system
      should provide the capability for a developer to update
      dependencies from an online repository.
      </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, instead of having to checkout and build the
      MicroContainer to test if a recent change affects the
      Application Server, it should be possible to configure the build
      system to download the most recent build from the online
      repository.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">As illustrated in the figure below, this requires that the
      continuous build system (cruisecontrol) be enhanced to publish
      binary artifacts of each component to the online repository.
      The repository will include both snapshot and released versions
      of each project's artifacts.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e387"><fo:block><fo:external-graphic src="images/online-repository.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 4.1. Repository Workflow</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
	There will be cases where an updated snapshot dependency will
	introduce critical bugs which prohibit a downstream developer
	from moving forward. Therefore, it should also be possible to
	revert an artifact dependency to a previously working
	snapshot.</fo:block></fo:block><fo:block id="d0e393"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.3. Source Artifact Overrides</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.3. Source Artifact Overrides</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
	It should be possible to work with multiple projects at
	once. A developer should not be required to copy artifacts by
	hand when testing the integration between two
	projects. Therefore, it should be possible to switch between
	using a binary snapshot of a dependency (from the online
	repository) and integrating the local build of that project.
      </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
	Succinctly, it should be possible to use an artifact of a
	project instead of a the pre-compiled library simply by
	checking out the project from CVS and configuring the build of
	the integration project to call the dependent project's build.
      </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
	The balance between using the source of a dependency and using
	its pre-built library from the online repository is one of personal
	choice and circumstance. The build system should be flexible enough to
	support both modes, and make it painless to switch back and forth.
      </fo:block></fo:block><fo:block id="d0e402"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.4. Dependency Version Reconciliation</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.4. Dependency Version Reconciliation</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Each project depends on a specific version of a
      dependency. However, when projects are aggregated into an
      integration project such as the Application Server, they must be
      compatible with the same version of a library.  Since the
      projects are compiled seperately, there is a risk that when they
      are combined into a single classpath, there will be runtime
      LinkageErrors.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Let's take an example of JBossCache and JMS, two projects
      which both depend on JGroups.  Both are built and versioned
      seperately. A release from each will need to be included in the
      application server.  At this point JBossCache and JMS will need
      to be compatible with the JGroups library included in the
      application server.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e409"><fo:block><fo:external-graphic src="images/version-conflict.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 4.2. Example of Dependency Version Conflict</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There is a potential that the JGroups JAR provided by the
      application server will have binary or functional
      incompatibilities with JBossCache or JMS because of the version
      discrepancy.  To mitigate this, these projects will need to be
      continuously integrated with the Application Server to ensure
      compatibility.  This includes compiling and testing these
      projects <fo:inline font-style="italic">against the library versions dictated by the
      Application Server.</fo:inline>  </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Therefore, the build system should support the overriding
      of dependency versions so that projects can be compiled and
      tested with the versions specified by another project. This
      could be in the form of allowing the library version number to
      be set as a property.  One could then override the properties
      for all library versions when running a build.</fo:block></fo:block><fo:block id="d0e420"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.5. Component Builds</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.5. Component Builds</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Projects need the ability to modularize source
      code into components.  The build system should provide projects
      with the ability to integrate component builds and aggregate
      their artifacts into project releases.
      </fo:block></fo:block><fo:block id="d0e425"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.6. Extensibility</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.6. Extensibility</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Individual projects need the ability to customize the
      behavior of the build system to specific needs.  The build
      system should allow for ad-hoc extensions specific to a project
      to be introduced by clearly defined extension points.</fo:block></fo:block><fo:block id="d0e430"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.7. Incremental Builds</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.7. Incremental Builds</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The build system should optimize the code, compile and test
      cycle for the developer.  At the very least, this means that
      dependency checking should be used to ensure that a given
      invocation of the build performs the least amount of
      work.</fo:block></fo:block><fo:block id="d0e435"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.8. Artifact JDK Version</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.8. Artifact JDK Version</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It should be possible for projects to declare minimum JDK
      requirements for a given artifact.  If the JDK performing the
      build is at a lower release than an artifact specifies, the
      artifact will be excluded from the build.  For example, a
      artifact might require JDK 1.5 to build.  When the project is
      built using JDK 1.4, that particular component will not be
      compiled.
      </fo:block></fo:block><fo:block id="d0e440"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.3.9. Line-Precise Error Reporting</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.3.9. Line-Precise Error Reporting</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The build system should, as much as possible, provide
      line-precise error messages.  This should include errors in the
      build scripts, and misconfigurations in the project structure.
      </fo:block></fo:block></fo:block><fo:block id="d0e445"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.4. Use Cases</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.4. Use Cases</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e448"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.4.1. Intial Project Checkout &amp; Build</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.4.1. Intial Project Checkout &amp; Build</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A developer wishes to checkout the AS.  The initial
      checkout will not include any libraries or components.  Once
      the build is invoked, the unsatisfied dependencies will be
      resolved from the online repository.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
cd $WORK
cvs co jboss-as
:
cd jboss-as
ant build
      </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
      Since this is a clean checkout, none of the libraries will be
      locally available.  The build system will detect the unresolved
      dependencies and will download them from the repository.  Since
      none of the dependencies (I.E., aop, microcontainer) are
      available in source form, their artifacts will be downloaded
      from the repository.</fo:block></fo:block><fo:block id="d0e457"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.4.2. Source Override</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.4.2. Source Override</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">After checking out the jboss-as project, the developer
      wishes to make a change to the jboss-common dependency.  To
      accomplish this, the developer checks out the dependency from
      CVS into the working directory.  When jboss-as is rebuilt, the
      build for jboss-common will be invoked. The artifact from the
      jboss-common project will override the jboss-common library
      which had previously been downloaded from the online
      repository.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
cd $WORK
cvs co jboss-common
:
cd jboss-as
ant rebuild
      </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the developer wishes to only build the jboss-common
      component he can change to that directory and invoke the
      build. Only the jboss-common project will be built.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
cd $WORK
cd jboss-comon
ant rebuild
      </fo:block></fo:block><fo:block id="d0e468"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.4.3. JBossCache Example</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.4.3. JBossCache Example</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This use case demonstrates how a developer might test a
      bug fix in JBossCache with the Application Server.  For the
      purposes of this example, the work directory is empty.
      </fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
cd $WORK
cvs co -r JBoss_Cache_1_1 jboss-cache
cvs co -r JBoss_AS_5_1 jboss-as
cd jboss-as
ant tests
      </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In this example, the jboss-as build would see the
      jboss-cache project in the work directory and would build it
      before building the AS and then running the testsuite.</fo:block></fo:block><fo:block id="d0e477"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.4.4. Valid Commit</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.4.4. Valid Commit</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Developer A commits a valid change to jboss-common,
      CruiseControl detects the modification and performs a clean
      build of all affected projects.  The build succeeds, and the
      snapshot artifacts are published to the repository.  Later,
      Developer B performs a build of jboss-as without a source copy
      of jboss-common.  The build system downloads the snapshot of
      the jboss-common jars and successfully builds the
      project.</fo:block></fo:block><fo:block id="d0e482"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">4.4.5. Broken Build: Interface Changes</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">4.4.5. Broken Build: Interface Changes</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Developer A commits a change to jboss-common which breaks
      an interface used by jboss-system.  Developer A did not build
      jboss-system against the changed interface and so does not
      commit any fixes for jboss-system.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Cruisecontrol detects the change in jboss-common and
      intiates a build of all projects which depend on the given
      branch of jboss-common.  The build fails, and a failure email is
      issued.  No artifacts are published to the repository, so
      development against the existing snapshot can proceed.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>CVS Access for JBoss Sources</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>CVS Access for JBoss Sources</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="cvsaccess"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">5</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">CVS Access for JBoss Sources</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">CVS Access for JBoss Sources</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Source code is available for every JBoss module and 
any version of JBoss can be built from source by downloading the
appropriate version of the code from the JBoss Forge CVS Repository.</fo:block>

CVS (Concurrent Versions System) is an Open Source version control system 
that is used pervasively throughout the Open Source community. 
It keeps track of source changes made by groups of developers who are 
working on the same files and enables developers to stay in sync with each 
other as each individual chooses.

<fo:block id="d0e497"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">5.1. Obtaining a CVS Client</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">5.1. Obtaining a CVS Client</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The command line version of the CVS program is freely available for nearly
every platform and is included by default on most Linux and UNIX distributions. 
A good port of CVS as well as numerous other UNIX programs for Win32 platforms 
is available from <fo:basic-link external-destination="http://sources.redhat.com/cygwin/">Cygwin</fo:basic-link><fo:inline hyphenate="false"> [http://sources.redhat.com/cygwin/]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The syntax of the command line version of CVS will be examined because this is 
common across all platforms.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
For complete documentation on CVS, check out 
<fo:basic-link external-destination="http://www.cvshome.org/">The CVS Home Page</fo:basic-link><fo:inline hyphenate="false"> [http://www.cvshome.org/]</fo:inline>.
</fo:block></fo:block><fo:block id="d0e512"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">5.2. Anonymous CVS Access</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">5.2. Anonymous CVS Access</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
All JBoss projects' CVS repositories can be accessed through 
anonymous(pserver) CVS with the following instruction set.
The module you want to check out must be specified as the modulename.
When prompted for a password for anonymous, simply press the Enter key.
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The general syntax of the command line version of CVS for anonymous access 
to the JBoss repositories is:
</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
cvs -d:pserver:anonymous@anoncvs.forge.jboss.net:/cvsroot/jboss login
cvs -z3 -d:pserver:anonymous@anoncvs.forge.jboss.net:/cvsroot/jboss co modulename
</fo:inline>
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The first command logs into JBoss CVS repository as an anonymous user. 
This command only needs to be performed once for each machine on which 
you use CVS because the login information will be saved in your HOME/.cvspass 
file or equivalent for your system. The second command checks out a copy 
of the modulename source code into the directory from which you run the cvs command. 
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To avoid having to type the long cvs command line each time, you can set up a 
CVSROOT environment variable.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
set CVSROOT=:pserver:anonymous@anoncvs.forge.jboss.net:/cvsroot/jboss
</fo:inline>
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The abbreviated versions of the previous commands can then be used:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
cvs login
cvs -z3 co modulename
</fo:inline>
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The name of the JBoss module alias you use depends on the version of JBoss you want. 
For the 3.0 branch the module name is jboss-3.0, for the 3.2 branch it is jboss-3.2, 
and in general, for branch x.y the module name is jboss-x.y. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To checkout the HEAD revision of jboss to obtain the latest code on the main branch 
you would use jboss-head as the module name.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Releases of JBoss are tagged with the pattern JBoss_X_Y_Z where X is the major version, 
Y is the minor version and Z is the patch version. Release branches of JBoss are 
tagged with the pattern Branch_X_Y.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Some checkout examples are:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
cvs co -r JBoss_3_2_6 jboss-3.2 # Checkout the 3.2.6 release version code
cvs co jboss-head # Checkout the curent HEAD branch code
</fo:inline>
</fo:block></fo:block><fo:block id="d0e553"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">5.3. Committer Access to CVS and JIRA</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">5.3. Committer Access to CVS and JIRA</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Write access to the repository is granted only on approval by the Forge Administrator.  To request write access send an email to forge-admin@jboss.com asking for committer access.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On approval, you will be given read/write access to the repository and a committer status in JIRA.  It is required that you have a committer role in JIRA.  The Forge Admin will make sure that you have the proper role and permission status.</fo:block>

To use the committer repository:

<fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
export CVS_RSH=ssh
export CVSROOT=:ext:username@cvs.forge.jboss.com:/cvsroot/jboss
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If you are a JBoss employee, your username is the same as your existing cvs.jboss.com username.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If you are not a JBoss Employee, then your username is your existing SourceForge username OR your jboss.com username.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There is NO shell access, only cvs over ssh, similar to SourceForge.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">All commiter access is authenticated via SSH. There is no password based committer access. You need to supply an SSH protocol verison 2 public key for access to be granted.</fo:block>

This could be done using the ssh-keygen utility as:

<fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
ssh-keygen -t dsa -C 'cvs.forge.jboss.com access' -f mykey
</fo:block>
or
<fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
ssh-keygen -t rsa -C 'cvs.forge.jboss.com access' -f mykey
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If you don't know your username or have any trouble, just send an email to forge-admin@jboss.com.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For committer access requests, please include:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e581" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e582"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Your full name.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e584"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Your SSH public key.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e586"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> A valid email address for us to use.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e588"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Your SourceForge username IF you had committer access before the CVS migration</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e590"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> Your jboss.org website username.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Coding Conventions</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Coding Conventions</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="coding"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">6</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Coding Conventions</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
This section lists some general guidelines followed in JBoss code
for coding sources / tests.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
All files (including tests) should have a header like the following:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
/*
 * JBoss, Home of Professional Open Source
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */ 
</fo:inline>
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The header asserts the LGPL license, without which the content would be closed source. 
The assumption under law is copyright the author, all rights reserved or sometimes
the opposite - if something is published without asserting the copyright or license
it is public domain. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Use the template files on JIRA for consistency. These template files encapsulate
settings that are generally followed such as replacing tabs with 3 spaces for 
portability amongst editors, auto-insertion of headers etc.</fo:block><fo:block id="d0e608"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">6.1. Templates</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">6.1. Templates</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Template files for the Eclipse IDE can be found here:
<fo:basic-link external-destination="http://jira.jboss.com/jira/secure/attachment/12310313/jboss-format.xml/">JBoss Eclipse Format</fo:basic-link><fo:inline hyphenate="false"> [http://jira.jboss.com/jira/secure/attachment/12310313/jboss-format.xml/]</fo:inline>.
<fo:basic-link external-destination="http://jira.jboss.com/jira/secure/attachment/12310312/jboss-template.xml/">JBoss Eclipse Template</fo:basic-link><fo:inline hyphenate="false"> [http://jira.jboss.com/jira/secure/attachment/12310312/jboss-template.xml/]</fo:inline>.
</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Template files for other IDEs(IntelliJ-IDEA, NetBeans should be available here soon.
</fo:block><fo:block id="d0e621"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">6.1.1. Importing Templates into the Eclipse IDE</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">6.1.1. Importing Templates into the Eclipse IDE</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The process of importing templates into the Eclipse IDE is as follows:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
On the IDE, goto Windows Menu =&gt; Preferences =&gt; Java =&gt; Code Style =&gt; Code Templates 
=&gt; Import and choose to import the Eclipse template files. </fo:block><fo:external-graphic src="images/import-prefs.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Tools such as <fo:basic-link external-destination="http://jalopy.sourceforge.net">Jalopy</fo:basic-link><fo:inline hyphenate="false"> [http://jalopy.sourceforge.net]</fo:inline> help to automate 
template changes at one shot to numerous files.</fo:block></fo:block><fo:block id="d0e635"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">6.2. Some more general guidelines</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">6.2. Some more general guidelines</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e638" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e639"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
Fully qualified imports should be used, rather than importing x.y.*.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e642"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
Use newlines for opening braces, so that the top and bottom braces can be visually 
matched.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e645"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
Aid visual separation of logical steps by introducing newlines and appropriate comments
above them.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e648"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">6.3. JavaDoc recommendations</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">6.3. JavaDoc recommendations</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e651" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e652"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
All public and protected members and methods should be documented.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e655"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
It should be documented if "null" is an acceptable value for parameters.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e658"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
Side effects of method calls, if known, or as they're discovered should be documented.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e661"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
It would also be useful to know from where an overridden method can be invoked.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e664"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.1. A class that conforms to JBoss coding guidelines</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
/*
 * 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

/**
 * A description of this class.
 *
 * @see SomeRelatedClass.
 *
 * @version &lt;tt&gt;$Revision: 1.2 $&lt;/tt&gt;
 * @author  &lt;a href="mailto:{email}"&gt;{full name}&lt;/a&gt;.
 * @author  &lt;a href="mailto:marc@jboss.org"&gt;Marc Fleury&lt;/a&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 DISTINCT **STEPS** AND ADD A
      // LINE OF COMMENT TO IT
      cls = vendorSource.getClass();
      
      
      if(properties != null) 
      {
      
         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 -------------------------------------------------
}</fo:inline></fo:block></fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e671"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.2. An interface that conforms to JBoss coding guidelines</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
/*
 * 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

/**
 * A description of this interface.
 *
 * @see SomeRelatedClass
 *
 * @version &lt;tt&gt;$Revision: 1.2 $&lt;/tt&gt;
 * @author  &lt;a href="mailto:{email}"&gt;{full name}&lt;/a&gt;.
 * @author  &lt;a href="mailto:marc@jboss.org"&gt;Marc Fleury&lt;/a&gt;
 */
public interface X extends Y
{
   int MY_STATIC_FINAL_VALUE = 57;

   ReturnClass doSomething() throws ExceptionA, ExceptionB;  
}</fo:inline></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Logging Conventions</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Logging Conventions</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="logging"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">7</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Logging Conventions</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Persisted diagnostic logs are often very useful in debugging software issues.
This section lists some general guidelines followed in JBoss code
for diagnostic logging.</fo:block><fo:block id="d0e683"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.1. Obtaining a Logger</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.1. Obtaining a Logger</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The following code snippet illustrates how you can obtain a logger.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
package org.jboss.X.Y;
import org.jboss.logging.Logger;

public class TestABCWrapper
{
   private static final Logger log = Logger.getLogger(TestABCWrapper.class.getName());

   // Hereafter, the logger may be used with whatever priority level as appropriate.
}</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
After a logger is obtained, it can be used to log messages by specifying appropriate 
priority levels.</fo:block></fo:block><fo:block id="d0e694"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.2. Logging Levels</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.2. Logging Levels</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e697" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e698"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
FATAL - Use the FATAL level priority for events that indicate a critical service 
failure. If a service issues a FATAL error it is completely unable to service 
requests of any kind.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e700"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
ERROR - Use the ERROR 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 ERRORs.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e702"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
WARN - Use the WARN 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 WARN and ERROR 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 ERROR. If it would not use WARN.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e704"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
INFO - Use the INFO level priority for service life-cycle events and other crucial 
related information. Looking at the INFO messages for a given service category should 
tell you exactly what state the service is in. 
</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e706"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
DEBUG - Use the DEBUG 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 DEBUG level priority 
is enabled, the JBoss server log should not grow proportionally with the number of server 
requests. Looking at the DEBUG and INFO 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.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e708"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
TRACE - Use TRACE 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 <fo:inline font-family="monospace" font-size="0.8em">Logger.isTraceEnabled()</fo:inline> method to determine if 
the category priority threshold is enabled. The point of the <fo:inline font-family="monospace" font-size="0.8em">TRACE</fo:inline> priority 
is to allow for deep probing of the JBoss server behavior when necessary. 
When the <fo:inline font-family="monospace" font-size="0.8em">TRACE</fo:inline> level priority is enabled, you can expect the number of 
messages in the JBoss server log to grow at least a x N, where N is the number of 
requests received by the server, a some constant. The server log may well grow as 
power of N depending on the request-handling layer being traced. 
</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e719"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3. Log4j Configuration</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3. Log4j Configuration</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> configuration is loaded from the jboss server <fo:inline font-family="monospace" font-size="0.8em">conf/log4j.xml</fo:inline> 
file. You can edit this to add/change the default appenders and logging thresholds.</fo:block><fo:block id="d0e730"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.1. Separating Application Logs</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.1. Separating Application Logs</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
You can segment logging output by assigning <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> categories to specific appenders
in the <fo:inline font-family="monospace" font-size="0.8em">conf/log4j.xml</fo:inline> configuration.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e741"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.1. Assigning categories to specific appenders</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

  &lt;appender name="App1Log" class="org.apache.log4j.FileAppender"&gt;
      &lt;errorHandler  
             class="org.jboss.logging.util.OnlyOnceErrorHandler"/&gt;
      &lt;param name="Append" value="false"/&gt;
      &lt;param name="File" 
             value="${jboss.server.home.dir}/log/app1.log"/&gt;
      &lt;layout class="org.apache.log4j.PatternLayout"&gt;
         &lt;param name="ConversionPattern" 
                value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/&gt;
      &lt;/layout&gt;
   &lt;/appender&gt;

...

   &lt;category name="com.app1"&gt;
     &lt;appender-ref ref="App1Log"/&gt;
   &lt;/category&gt;
   &lt;category name="com.util"&gt;
     &lt;appender-ref ref="App1Log"/&gt;
   &lt;/category&gt;

...

   &lt;root&gt;
      &lt;appender-ref ref="CONSOLE"/&gt;
      &lt;appender-ref ref="FILE"/&gt;
      &lt;appender-ref ref="App1Log"/&gt;
   &lt;/root&gt;

</fo:inline>
</fo:block></fo:block></fo:block><fo:block id="d0e749"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.2. Specifying appenders and filters</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.2. Specifying appenders and filters</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
If you have multiple apps with shared classes/categories, and/or want the jboss categories
to show up in your app log then this approach will not work. There is a new appender filter 
called TCLFilter that can help with this. The filter should be added to the appender and 
it needs to be speciifed what deployment url should logging be 
restricted to. For example, if your app1 deployment was app1.ear, you would use the 
following additions to the <fo:inline font-family="monospace" font-size="0.8em">conf/log4j.xml</fo:inline>:</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e757"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.2. Filtering log messages</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

   &lt;appender name="App1Log" class="org.apache.log4j.FileAppender"&gt;
      &lt;errorHandler 
           class="org.jboss.logging.util.OnlyOnceErrorHandler"/&gt;
      &lt;param name="Append" value="false"/&gt;
      &lt;param name="File" 
             value="${jboss.server.home.dir}/log/app1.log"/&gt;
      &lt;layout class="org.apache.log4j.PatternLayout"&gt;
         &lt;param name="ConversionPattern" 
                value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/&gt;
      &lt;/layout&gt;
      &lt;filter class="org.jboss.logging.filter.TCLFilter"&gt;
         &lt;param name="AcceptOnMatch" value="true"/&gt;
         &lt;param name="DeployURL" value="app1.ear"/&gt;
      &lt;/filter&gt;
   &lt;/appender&gt;

...

   &lt;root&gt;
      &lt;appender-ref ref="CONSOLE"/&gt;
      &lt;appender-ref ref="FILE"/&gt;
      &lt;appender-ref ref="App1Log"/&gt;
   &lt;/root&gt;

</fo:inline></fo:block></fo:block></fo:block><fo:block id="d0e764"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.3. Logging to a Seperate Server</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.3. Logging to a Seperate Server</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The log4j framework has a number of appenders that allow you to send log message 
to an external server. Common appenders include:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e769" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e770"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">
org.apache.log4j.net.JMSAppender</fo:inline></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e773"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">
org.apache.log4j.net.SMTPAppender</fo:inline></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e776"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">
org.apache.log4j.net.SocketAppender</fo:inline></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e779"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">
org.apache.log4j.net.SyslogAppender</fo:inline></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e782"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em"> 
org.apache.log4j.net.TelnetAppender</fo:inline></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Documentation on configuration of these appenders can be found at 
<fo:basic-link external-destination="http://logging.apache.org/">Apache Logging Services</fo:basic-link><fo:inline hyphenate="false"> [http://logging.apache.org/]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
JBoss has a <fo:inline font-family="monospace" font-size="0.8em">Log4jSocketServer</fo:inline> service that allows for easy use of 
the <fo:inline font-family="monospace" font-size="0.8em">SocketAppender</fo:inline>.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e798"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.3. Setting up and using the <fo:inline font-family="monospace" font-size="0.8em">Log4jSocketServer</fo:inline> service.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The <fo:inline font-family="monospace" font-size="0.8em">org.jboss.logging.Log4jSocketServer</fo:inline> is an mbean service that allows 
one to collect output from multiple <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> clients (including jboss servers) 
that are using the <fo:inline font-family="monospace" font-size="0.8em">org.apache.log4j.net.SocketAppender</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The <fo:inline font-family="monospace" font-size="0.8em">Log4jSocketServer</fo:inline> creates a server socket to accept 
<fo:inline font-family="monospace" font-size="0.8em">SocketAppender</fo:inline> connections, and logs incoming messages based on the 
local <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> configuration.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
You can create a minimal jboss configuration that includes a 
<fo:inline font-family="monospace" font-size="0.8em">Log4jSocketServer</fo:inline> to act as your log server.</fo:block></fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e831"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.4. An <fo:inline font-family="monospace" font-size="0.8em">Log4jSocketServer</fo:inline> mbean configuration</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following MBean Configuration can be added to the 
<fo:inline font-family="monospace" font-size="0.8em">conf/jboss-service.xml</fo:inline></fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">

   &lt;mbean code="org.jboss.logging.Log4jSocketServer"
      name="jboss.system:type=Log4jService,service=SocketServer"&gt;
      &lt;attribute name="Port"&gt;12345&lt;/attribute&gt;
      &lt;attribute name="BindAddress"&gt;${jboss.bind.address}&lt;/attribute&gt;
   &lt;/mbean&gt;
</fo:inline></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace" font-size="0.8em">Log4jSocketServer</fo:inline> adds an MDC entry under the key 'host' 
which includes the client socket <fo:inline font-family="monospace" font-size="0.8em">InetAddress.getHostName</fo:inline> value on 
every client connection. This allows you to differentiate logging output 
based on the client hostname using the MDC pattern.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e852"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.5. Augmenting the log server console output with the logging client socket hostname</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

      &lt;appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"&gt;
      &lt;errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/&gt;
      &lt;param name="Target" value="System.out"/&gt;
      &lt;param name="Threshold" value="INFO"/&gt;

      &lt;layout class="org.apache.log4j.PatternLayout"&gt;
         &lt;param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1},%X{host}] %m%n"/&gt;
      &lt;/layout&gt;
   &lt;/appender&gt;

</fo:inline>
</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
All other jboss servers that should send log messages to the log server would add 
an appender configuration that uses the SocketAppender.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e862"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.6. <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> appender for the Log4jSocketServer</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

   &lt;appender name="SOCKET" class="org.apache.log4j.net.SocketAppender"&gt;
      &lt;param name="Port" value="12345"/&gt;
      &lt;param name="RemoteHost" value="loghost"/&gt;
      &lt;param name="ReconnectionDelay" value="60000"/&gt;
      &lt;param name="Threshold" value="INFO"/&gt;
   &lt;/appender&gt;

</fo:inline></fo:block></fo:block></fo:block><fo:block id="d0e871"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.4. Key JBoss Subsystem Categories</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.4. Key JBoss Subsystem Categories</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Some of the key subsystem category names are given in the following table. 
These are just the top level category names. Generally you can specify much more 
specific category names to enable very targeted logging.</fo:block><fo:block span="none"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e876"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 7.1. JBoss SubSystem Categories</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.1pt" border-right-width="0.1pt" border-top-width="0.1pt" border-bottom-width="0.1pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="17.4cm"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-header><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">SubSystem</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Category</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>Cache</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.cache</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>CMP</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.ejb.plugins.cmp</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>Core Service</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.system</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>Cluster</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.ha</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>EJB</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.ejb</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>JCA</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.resource</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>JMX</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.mx</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>JMS</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.mq</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>JTA</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.tm</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>MDB</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.ejb.plugins.jms, org.jboss.jms</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>Security</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.security</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>Tomcat</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.jboss.web, org.apache.catalina</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>Apache Stuff</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>org.apache</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>JGroups</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" text-align="left"><fo:block>org.jgroups</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block><fo:block id="d0e959"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.5. Redirecting Category Output</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.5. Redirecting Category Output</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
When you increase the level of logging for one or more categories, it is often 
useful to redirect the output to a seperate file for easier investigation. 
To do this you add an appender-ref to the category as shown here:</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e964"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.7. Adding an appender-ref to a category</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

   &lt;appender name="JSR77" class="org.apache.log4j.FileAppender"&gt;
      &lt;param name="File"
             value="${jboss.server.home.dir}/log/jsr77.log"/&gt;
...
   &lt;/appender&gt;

   &lt;!-- Limit the JSR77 categories --&gt;
   &lt;category name="org.jboss.management" additivity="false"&gt;
      &lt;priority value="DEBUG"/&gt;
      &lt;appender-ref ref="JSR77"/&gt;
   &lt;/category&gt;
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
This sends all<fo:inline font-family="monospace" font-size="0.8em">org.jboss.management</fo:inline> output to the <fo:inline font-family="monospace" font-size="0.8em">jsr77.log</fo:inline>
 file. The additivity attribute controls whether output continues to go to the root 
category appender. If false, output only goes to the appenders referred to by the 
category.</fo:block></fo:block></fo:block><fo:block id="d0e979"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.6. Using your own log4j.xml file - class loader scoping</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.6. Using your own log4j.xml file - class loader scoping</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
In order to use your own <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> file you need to do something to 
initialize <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> in your application. If you use the default singleton
initialization method where the first use of <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> triggers a search for 
the <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> initialization files, you need to configure a ClassLoader to use 
scoped class loading, with overrides of the jBoss classes. You also have to include 
the <fo:inline font-family="monospace" font-size="0.8em">log4j.jar</fo:inline> in your application so that new <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> singletons 
are created in your applications scope.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" id="d0e1002"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always" keep-with-next="always">Note</fo:block><fo:block>
You cannot use a <fo:inline font-family="monospace" font-size="0.8em">log4j.properties</fo:inline> file using this approach, at least using 
<fo:inline font-family="monospace" font-size="0.8em">log4j-1.2.8</fo:inline> because it preferentially searches for a <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> 
resource and will find the <fo:inline font-family="monospace" font-size="0.8em">conf/log4j.xml</fo:inline> ahead of the application 
<fo:inline font-family="monospace" font-size="0.8em">log4j.properties</fo:inline> file. You could rename the <fo:inline font-family="monospace" font-size="0.8em">conf/log4j.xml</fo:inline> 
to something like <fo:inline font-family="monospace" font-size="0.8em">conf/jboss-log4j.xml</fo:inline> and then change the 
<fo:inline font-family="monospace" font-size="0.8em">ConfigurationURL</fo:inline> attribute of the <fo:inline font-family="monospace" font-size="0.8em">Log4jService</fo:inline> in the 
<fo:inline font-family="monospace" font-size="0.8em">conf/jboss-service.xml</fo:inline> to get around this.</fo:block></fo:block></fo:block><fo:block id="d0e1034"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.7. Using your own log4j.properties file - class loader scoping</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.7. Using your own log4j.properties file - class loader scoping</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To use a <fo:inline font-family="monospace" font-size="0.8em">log4j.properties</fo:inline> file, you have to make the change in 
<fo:inline font-family="monospace" font-size="0.8em">conf/jboss-service.xml</fo:inline> as shown below. This is necessary for the 
reasons mentioned above. Essentially you are changing the <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> 
resource file that jBossAS will look for. After making the change in 
<fo:inline font-family="monospace" font-size="0.8em">jboss-service.xml</fo:inline> make sure you rename the <fo:inline font-family="monospace" font-size="0.8em">conf/log4j.xml</fo:inline> 
to the name that you have give in <fo:inline font-family="monospace" font-size="0.8em">jboss-service.xml</fo:inline> (in this case 
<fo:inline font-family="monospace" font-size="0.8em">jboss-log4j.xml</fo:inline>).</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
 
&lt;!--================================================================--&gt;
&lt;!-- Log4j Initialization                                           --&gt;
&lt;!-=================================================================--&gt;

&lt;mbean code="org.jboss.logging.Log4jService"
   name="jboss.system:type=Log4jService,service=Logging"&gt;
   &lt;attribute name="ConfigurationURL"&gt;
              resource:jboss-log4j.xml&lt;/attribute&gt;
 &lt;!-- Set the org.apache.log4j.helpers.LogLog.setQuiteMode. 
   As of log4j1.2.8 this needs to be set to avoid a possible deadlock 
   on exception at the appender level. See bug#696819.
 --&gt;
 &lt;attribute name="Log4jQuietMode"&gt;true&lt;/attribute&gt;
 &lt;!-- How frequently in seconds the ConfigurationURL is checked for changes --&gt;
 &lt;attribute name="RefreshPeriod"&gt;60&lt;/attribute&gt;
&lt;/mbean&gt;
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Drop <fo:inline font-family="monospace" font-size="0.8em">log4j.jar</fo:inline> in your <fo:inline font-family="monospace" font-size="0.8em">myapp.war/WEB-INF</fo:inline>. Make the change in 
<fo:inline font-family="monospace" font-size="0.8em">jboss-web.xml</fo:inline> for class-loading, as shown in the section above. In this case, 
<fo:inline font-family="monospace" font-size="0.8em">myapp.war/WEB-INF/jboss-web.xml</fo:inline> looks like this:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

&lt;jboss-web&gt;
  &lt;class-loading java2ClassLoadingCompliance="false"&gt;
  &lt;loader-repository&gt;
      myapp:loader=myapp.war
      &lt;loader-repository-config&gt;java2ParentDelegation=false
      &lt;/loader-repository-config&gt;
   &lt;/loader-repository&gt;
 &lt;/class-loading&gt;
&lt;/jboss-web&gt;
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now, in your <fo:inline font-family="monospace" font-size="0.8em">deploy/myapp.war/WEB-INF/classes</fo:inline> create a 
<fo:inline font-family="monospace" font-size="0.8em">log4j.properties</fo:inline>.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1090"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.8. Sample <fo:inline font-family="monospace" font-size="0.8em">log4j.properties</fo:inline></fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

# Debug log4j
log4j.debug=true  
log4j.rootLogger=debug, myapp

log4j.appender.myapp=org.apache.log4j.FileAppender
log4j.appender.myapp.layout=org.apache.log4j.HTMLLayout
log4j.appender.myapp.layout.LocationInfo=true
log4j.appender.myapp.layout.Title='All' Log
log4j.appender.myapp.File=${jboss.server.home.dir}/deploy/myapp.war/WEB-INF/logs/myapp.html
log4j.appender.myapp.ImmediateFlush=true
log4j.appender.myapp.Append=false
</fo:inline></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The above property file sets the <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> debug system to true, which displays 
<fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> messages in your jBoss log. You can use this to discover errors, if any 
in your properties file. It then produces a nice HTML log file and places it in your 
application's <fo:inline font-family="monospace" font-size="0.8em">WEB-INF/logs</fo:inline> directory. In your application, you can call 
this logger with the syntax:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
 
...
private static Logger log = Logger.getLogger("myapp");
...
log.debug("############## A debug message from myapp logger #########");
...

</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
If all goes well, you should see this message in <fo:inline font-family="monospace" font-size="0.8em">myapp.html</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
After jBossAS has reloaded <fo:inline font-family="monospace" font-size="0.8em">conf/jboss-service.xml</fo:inline> (you may have to restart 
jBossAS), touch <fo:inline font-family="monospace" font-size="0.8em">myapp.war/WEB-INF/web.xml</fo:inline> so that JBoss reloads the configuration
for your application. As the application loads you should see <fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline> debug messages 
showing that its reading your <fo:inline font-family="monospace" font-size="0.8em">log4j.properties</fo:inline>. This should enable you to have 
your own logging system independent of the JBoss logging system.</fo:block></fo:block><fo:block id="d0e1133"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.3.8. Using your own log4j.xml file - Log4j RepositorySelector</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.3.8. Using your own <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> file - <fo:inline font-family="monospace" font-size="0.8em">Log4j RepositorySelector</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Another way to achieve this is to write a custom <fo:inline font-family="monospace" font-size="0.8em">RepositorySelector</fo:inline> that changes how the 
<fo:inline font-family="monospace" font-size="0.8em">LogManager</fo:inline> gets a logger. Using this technique, <fo:inline font-family="monospace" font-size="0.8em">Logger.getLogger()</fo:inline>
will return a different logger based on the context class loader. Each context class loader 
has its own configuration set up with its own <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> file.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1155"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 7.9. A <fo:inline font-family="monospace" font-size="0.8em">RepositorySelector</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The following code shows a <fo:inline font-family="monospace" font-size="0.8em">RepositorySelector</fo:inline> that looks for a <fo:inline font-family="monospace" font-size="0.8em">log4j.xml</fo:inline> 
file in the <fo:inline font-family="monospace" font-size="0.8em">WEB-INF</fo:inline> directory.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
/*
 * JBoss, the OpenSource J2EE webOS
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */

package org.jboss.repositoryselectorexample;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.log4j.Hierarchy;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.RepositorySelector;
import org.apache.log4j.spi.RootCategory;
import org.apache.log4j.xml.DOMConfigurator;
import org.w3c.dom.Document;

/**
 * This RepositorySelector is for use with web applications.  
 * It assumes that your log4j.xml file is in the WEB-INF directory.
 * @author  Stan Silvert
 */
public class MyRepositorySelector implements RepositorySelector
{
   private static boolean initialized = false;

   // This object is used for the guard because it doesn't get
   // recycled when the application is redeployed.
   private static Object guard = LogManager.getRootLogger();
   
   private static Map repositories = new HashMap();
   private static LoggerRepository defaultRepository;

   /**
    * Register your web-app with this repository selector.
    */
   public static synchronized void init(ServletConfig config) 
        throws ServletException {
      if( !initialized ) // set the global RepositorySelector
      {
         defaultRepository = LogManager.getLoggerRepository();
         RepositorySelector theSelector = new MyRepositorySelector();
         LogManager.setRepositorySelector(theSelector, guard);
         initialized = true;
      }
      
      Hierarchy hierarchy = new Hierarchy(new
                                RootCategory(Level.DEBUG));
      loadLog4JConfig(config, hierarchy);
      ClassLoader loader = 
           Thread.currentThread().getContextClassLoader();
      repositories.put(loader, hierarchy);
   }

   // load log4j.xml from WEB-INF
   private static void loadLog4JConfig(ServletConfig config, 
                                       Hierarchy hierarchy) 
                                            throws ServletException {
        try {
            String log4jFile = "/WEB-INF/log4j.xml";
            InputStream log4JConfig = 
                
            config.getServletContext().getResourceAsStream(log4jFile);
            Document doc = DocumentBuilderFactory.newInstance()
                                                 .newDocumentBuilder()
                                                 .parse(log4JConfig);
            DOMConfigurator conf = new DOMConfigurator();
            conf.doConfigure(doc.getDocumentElement(), hierarchy);
        } catch (Exception e) {
            throw new ServletException(e);
        }
    }

   private MyRepositorySelector() {
   }

   public LoggerRepository getLoggerRepository() {
      ClassLoader loader = 
             Thread.currentThread().getContextClassLoader();
      LoggerRepository repository = 
            (LoggerRepository)repositories.get(loader);
      
      if (repository == null) {
          return defaultRepository;
      } else {
          return repository;
      }
   }
}
</fo:inline></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e1175"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">7.4. JDK java.util.logging</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">7.4. JDK java.util.logging</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The choice of the actual logging implementation is determined by the 
<fo:inline font-family="monospace" font-size="0.8em">org.jboss.logging.Logger.pluginClass</fo:inline> system property. This property specifies 
the class name of an implementation of the <fo:inline font-family="monospace" font-size="0.8em">org.jboss.logging.LoggerPlugin</fo:inline> interface.
The default value for this is the <fo:inline font-family="monospace" font-size="0.8em">org.jboss.logging.Log4jLoggerPlugin</fo:inline> class.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If you want to use the JDK 1.4+ <fo:inline font-family="monospace" font-size="0.8em">java.util.logging</fo:inline> framework instead of 
<fo:inline font-family="monospace" font-size="0.8em">log4j</fo:inline>, you can create your own <fo:inline font-family="monospace" font-size="0.8em">Log4jLoggerPlugin</fo:inline> to do this. 
The attached <fo:inline font-family="monospace" font-size="0.8em">JDK14LoggerPlugin.java</fo:inline> file shows an example implementation.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To use this, specify the following system properties:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1205" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1206"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
To specify the custom JDK1.4 plugin:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
org.jboss.logging.Logger.pluginClass = logging.JDK14LoggerPlugin</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1213"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
To specify the JDK1.4 logging configuration file:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
java.util.logging.config.file = logging.properties</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This can be done using the <fo:inline font-family="monospace" font-size="0.8em">JAVA_OPTS</fo:inline> env variable, for example:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
JAVA_OPTS="-Dorg.jboss.logging.Logger.pluginClass=logging.JDK14LoggerPlugin 
           -Djava.util.logging.config.file=logging.properties" 
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
You need to make your custom <fo:inline font-family="monospace" font-size="0.8em">Log4jLoggerPlugin</fo:inline> available to JBoss by placing 
it in a jar in the <fo:inline font-family="monospace" font-size="0.8em">JBOSS_DIST/lib</fo:inline> directory, and then telling JBoss to load 
this as part of the bootstrap libraries by passing in <fo:inline font-family="monospace" font-size="0.8em">-L jarname</fo:inline> on the command 
line as follows:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
starksm@banshee9100 bin$ run.sh -c minimal -L logger.jar</fo:inline></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>JBoss Test Suite</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>JBoss Test Suite</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="testsuite"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">8</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">JBoss Test Suite</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The JBoss Testsuite module is a collection of JUnit tests which require a running 
JBoss instance for in-container testing. Unit tests not requiring the container 
reside in the module they are testing.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The setup and initialization of the container is performed in the testsuite's 
<fo:inline font-family="monospace" font-size="0.8em">build.xml</fo:inline> file. The testsuite module also provides utility classes 
which support the deployment of test artifacts to the container.</fo:block><fo:block id="d0e1254"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.1. How To Run the JBoss Testsuite</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.1. How To Run the JBoss Testsuite</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
A source distribution of JBoss must be available to run the testsuite. 
This document applies only to JBoss 3.2.7 and above.</fo:block><fo:block id="d0e1259"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.1.1. Build JBoss</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.1.1. Build JBoss</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Before building the testsuite, the rest of the project must be built:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Unix</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">cd build
./build.sh</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Windows</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">cd build
build.bat</fo:inline></fo:block></fo:block><fo:block id="d0e1274"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.1.2. Build and Run the Testsuite</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.1.2. Build and Run the Testsuite</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To build and run the testsuite, type the following. 
Note that you no longer are required to seperately start a JBoss server instance 
before running the testsuite.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" id="d0e1279"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always" keep-with-next="always">Important</fo:block><fo:block> 
You must not have a JBoss instance running before you run the testsuite.</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Unix</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">cd ../testsuite
./build.sh tests</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Windows</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">cd ../testsuite
build.bat tests</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The build script will start and stop various configurations of JBoss, and then run tests 
against those configurations.</fo:block></fo:block><fo:block id="d0e1293"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.1.3. Running One Test at a Time</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.1.3. Running One Test at a Time</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To run an individual test, you will need to start the appropriate configuration. 
For most tests, this will be the <fo:inline font-family="monospace" font-size="0.8em">"all"</fo:inline> configuration:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
build/output/jboss-5.0.0alpha/bin/run.sh -c all </fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
And then tell the testsuite which test you want to run:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
cd testsuite
./build.sh one-test -Dtest=org.jboss.test.package.SomeTestCase</fo:inline></fo:block></fo:block><fo:block id="d0e1311"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.1.4. Clustering Tests Configuration</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.1.4. Clustering Tests Configuration</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Most of the tests are against a single server instance started on localhost. 
However, the clustering tests require two server instances. By default, the testsuite 
will bind one of these instances to localhost, and the other will be bound to hostname. 
You can override this in the <fo:inline font-family="monospace" font-size="0.8em">testsuite/local.properties</fo:inline> file.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">
node0=localhost
...
node1=MyHostname
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The nodes must be bound to different IP addresses, otherwise there will be port 
conflicts. Also, note these addresses must be local to the box you are running the 
testsuite on, the testsuite will need to start each server process before running the 
tests.</fo:block></fo:block><fo:block id="d0e1324"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.1.5. Viewing the Results</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.1.5. Viewing the Results</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
A browsable HTML document containing the testsuite results is available under 
<fo:inline font-family="monospace" font-size="0.8em">testsuite/output/reports/html</fo:inline>, and a text report (useful for emailing) 
is available under <fo:inline font-family="monospace" font-size="0.8em">testsuite/output/reports/text</fo:inline>.</fo:block></fo:block></fo:block><fo:block id="d0e1335"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.2. Testsuite Changes</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.2. Testsuite Changes</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The testsuite <fo:inline font-family="monospace" font-size="0.8em">build.xml</fo:inline> has been refactored to allow automated 
testing of multiple server configurations. The testsuite build scripts include 
facilities for customizing server configurations and starting and stopping 
these configurations. Most notably, this improvement allows clustering unit 
tests to be completely automated.</fo:block><fo:block id="d0e1343"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.2.1. Targets</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.2.1. Targets</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Tests are now grouped in to targets according to which server configuration 
they require. Here is a summary of the targets called by the top-level tests target:</fo:block><fo:block span="none"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1348"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.1. Build Targets and Descriptions</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.1pt" border-right-width="0.1pt" border-top-width="0.1pt" border-bottom-width="0.1pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="17.4cm"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-header><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Target</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">jboss-minimal-tests</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Tests requiring the minimal configuration.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">jboss-all-config-tests</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Runs the all configuration. Most tests can go here.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tests-security-manager</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Runs the default configuration with a security manager.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tests-clustering</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Creates two custom configurations based on the all configuration.
Tests run in this target should extend JBossClusteredTestCase to access
cluster information.
</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tomcat-ssl-tests</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Creates and runs a configuration with Tomcat SSL enabled.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tomcat-sso-tests</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Creates and runs a configuration with SSO enabled.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tomcat-sso-clustered-tests</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" text-align="left"><fo:block>Creates and runs two nodes with SSO enabled.</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block><fo:block id="d0e1402"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.2.2. Files</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.2.2. Files</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The testsuite build scripts have been reorganized. 
The code generation and jar targets have been extracted to their own files in 
<fo:inline font-family="monospace" font-size="0.8em">testsuite/imports</fo:inline>. These targets are imported 
for use by the main <fo:inline font-family="monospace" font-size="0.8em">build.xml</fo:inline> file. Also, it is important to 
note that module and library definitions are in different files.</fo:block><fo:block span="none"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1413"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.2. Summary of build files</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.1pt" border-right-width="0.1pt" border-top-width="0.1pt" border-bottom-width="0.1pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="17.4cm"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-header><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Build File</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">testsuite/build.xml</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Contains test targets. This file imports the macros and targets from the files below.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">testsuite/imports/server-config.xml</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Contains macros for creating and starting different server configurations.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tools/etc/buildmagic/modules.xml</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Similar to modules.ent, this file contains the Ant classpath definitions 
for each JBoss module.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">tools/etc/buildmagic/thirdparty.xml</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Like thirdparty.ent, this contains the Ant classpath definitions for each 
third party library.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">testsuite/imports/code-generation.xml</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>Xdoclet code generation. This file has the following targets: 
compile-bean-source, compile-mbean-sources, compile-xmbean-dds, 
compile-proxycompiler-bean-source.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" border-right-width="0.1pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace" font-size="0.8em">testsuite/imports/test-jars.xml</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" text-align="left"><fo:block>All jar tasks. The top-level jars target calls each module's 
_jar-* target (eg: _jar-aop).</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e1460"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.3. Functional Tests</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.3. Functional Tests</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Functional tests need to be located in the module which they test. The testsuite 
needs to be able to include these in the "tests" target.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To contribute functional tests to the testsuite, each module should contain a 
tests directory with with a <fo:inline font-family="monospace" font-size="0.8em">build.xml</fo:inline>. The <fo:inline font-family="monospace" font-size="0.8em">build.xml</fo:inline> 
should contain at least one target, <fo:inline font-family="monospace" font-size="0.8em">functional-tests</fo:inline>, which 
executes JUnit tests. The <fo:inline font-family="monospace" font-size="0.8em">functional-tests</fo:inline> target should build the tests, 
but should assume that the module itself has been built. 
The <fo:inline font-family="monospace" font-size="0.8em">tests/build.xml</fo:inline> should use the Ant <fo:inline font-family="monospace" font-size="0.8em">&lt;import/&gt;</fo:inline> 
task to reuse targets and property definitions from the module's main <fo:inline font-family="monospace" font-size="0.8em">build.xml.</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Functional test source code belongs in the <fo:inline font-family="monospace" font-size="0.8em">tests/src</fo:inline> directory.
The package structure of the tests should mirror the module's package structure, 
with an additional test package below <fo:inline font-family="monospace" font-size="0.8em">org/jboss</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
For example, classes under <fo:inline font-family="monospace" font-size="0.8em">org.jboss.messaging.core</fo:inline> should have tests 
under <fo:inline font-family="monospace" font-size="0.8em">org.jboss.test.messaging.core</fo:inline>.</fo:block><fo:block id="d0e1503"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.3.1. Integration with Testsuite</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.3.1. Integration with Testsuite</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The <fo:inline font-family="monospace" font-size="0.8em">testsuite/build.xml</fo:inline> will include a <fo:inline font-family="monospace" font-size="0.8em">functional-tests</fo:inline> target 
which uses the <fo:inline font-family="monospace" font-size="0.8em">&lt;subant&gt;</fo:inline> task to call the funtional-tests target on each module's 
<fo:inline font-family="monospace" font-size="0.8em">tests/build.xml</fo:inline>. The testsuite will only override properties relevant to 
the junit execution, and the module's <fo:inline font-family="monospace" font-size="0.8em">tests/build.xml</fo:inline> must use these properties 
as values for the corresponding attributes:</fo:block><fo:inline font-family="monospace" font-size="0.8em">
<fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1525" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1526"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.printsummary</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1528"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.haltonerror</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1530"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.haltonfailure</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1532"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.fork</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1534"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.timeout</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1536"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.jvm</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1538"><fo:list-item-label end-indent="label-end()"><fo:block>7.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.jvm.options</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1540"><fo:list-item-label end-indent="label-end()"><fo:block>8.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.formatter.usefile</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1542"><fo:list-item-label end-indent="label-end()"><fo:block>9.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.batchtest.todir</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1544"><fo:list-item-label end-indent="label-end()"><fo:block>10.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.batchtest.haltonerror</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1546"><fo:list-item-label end-indent="label-end()"><fo:block>11.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.batchtest.haltonfailure</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1548"><fo:list-item-label end-indent="label-end()"><fo:block>12.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.batchtest.fork</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:inline><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The following properties are not set by the testsuite:</fo:block><fo:inline font-family="monospace" font-size="0.8em">
<fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1554" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1555"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.sysproperty.log4j.configuration</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1557"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>junit.sysproperty.*</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:inline><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1559"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.1. Example Build Script for Functional Tests</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;!-- ====================================================================== --&gt;
&lt;!--                                                                        --&gt;
&lt;!--  JBoss, the OpenSource J2EE webOS                                      --&gt;
&lt;!--                                                                        --&gt;
&lt;!--  Distributable under LGPL license.                                     --&gt;
&lt;!--  See terms of license at http://www.gnu.org.                           --&gt;
&lt;!--                                                                        --&gt;
&lt;!-- ====================================================================== --&gt;

&lt;!-- $Id: testsuite.xml,v 1.1 2005/04/15 14:42:52 piyer Exp $ --&gt;

&lt;project default="tests" name="JBoss/Messaging"&gt;

   &lt;!-- overridden to resolve thirdparty &amp; module deps --&gt;
   &lt;dirname property="remote.root" file="${basedir}"/&gt;
   &lt;dirname property="project.root" file="${remote.root}"/&gt;

   &lt;import file="../../tools/etc/buildmagic/build-common.xml"/&gt;
   &lt;import file="../../tools/etc/buildmagic/libraries.xml"/&gt;
   &lt;import file="../../tools/etc/buildmagic/modules.xml"/&gt;

   &lt;!-- ================================================================== --&gt;
   &lt;!-- Configuration                                                      --&gt;
   &lt;!-- ================================================================== --&gt;

   &lt;!-- Module name(s) &amp; version --&gt;
   &lt;property name="module.name" value="jms"/&gt;
   &lt;property name="module.Name" value="JBoss Messaging"/&gt;
   &lt;property name="module.version" value="5.0.0"/&gt;

   &lt;!-- ========= --&gt;
   &lt;!-- Libraries --&gt;
   &lt;!-- ========= --&gt;
   &lt;!-- The combined library classpath --&gt;
   &lt;path id="library.classpath"&gt;
      &lt;path refid="apache.log4j.classpath"/&gt;
      &lt;path refid="oswego.concurrent.classpath"/&gt;
      &lt;path refid="junit.junit.classpath"/&gt;
      &lt;path refid="jgroups.jgroups.classpath"/&gt;
      &lt;path refid="apache.commons.classpath"/&gt;
   &lt;/path&gt;

   &lt;!-- ======= --&gt;
   &lt;!-- Modules --&gt;
   &lt;!-- ======= --&gt;
   &lt;!-- The combined dependent module classpath --&gt;
   &lt;path id="dependentmodule.classpath"&gt;
      &lt;path refid="jboss.common.classpath"/&gt;
      &lt;path refid="jboss.jms.classpath"/&gt;
   &lt;/path&gt;

   &lt;!-- ===== --&gt;
   &lt;!-- Tasks --&gt;
   &lt;!-- ===== --&gt;

   &lt;property name="source.tests.java" value="${module.source}"/&gt;
   &lt;property name="build.tests.classes" value="${module.output}/classes"/&gt;
   &lt;property name="build.tests.lib" value="${module.output}/lib"/&gt;
   &lt;property name="build.tests.output" value="${module.output}/reports"/&gt;
   &lt;property name="build.performance.tests.output" value="${module.output}/reports/performance"/&gt;
   &lt;property name="build.tests.archive" value="jboss-messaging-tests.jar"/&gt;

   &lt;path id="test.classpath"&gt;
      &lt;path refid="library.classpath"/&gt;
      &lt;path refid="dependentmodule.classpath"/&gt;
   &lt;/path&gt;


   &lt;!-- Compile all test files --&gt;
   &lt;target name="compile-test-classes"&gt;
      &lt;mkdir dir="${build.tests.classes}"/&gt;
      &lt;javac destdir="${build.tests.classes}"
         optimize="${javac.optimize}"
         target="1.4"
         source="1.4"
         debug="${javac.debug}"
         depend="${javac.depend}"
         verbose="${javac.verbose}"
         deprecation="${javac.deprecation}"
         includeAntRuntime="${javac.include.ant.runtime}"
         includeJavaRuntime="${javac.include.java.runtime}"
         failonerror="${javac.fail.onerror}"&gt;
         &lt;src path="${source.tests.java}"/&gt;
         &lt;classpath refid="test.classpath"/&gt;
         &lt;include name="**/*.java"/&gt;
      &lt;/javac&gt;
   &lt;/target&gt;


   &lt;target name="tests-jar"
           depends="compile-test-classes"
           description="Creates the jar file with all the tests"&gt;

      &lt;mkdir dir="${build.tests.lib}"/&gt;

      &lt;!-- Build the tests jar --&gt;
      &lt;jar jarfile="${build.tests.lib}/${build.tests.archive}"&gt;
         &lt;fileset dir="${build.tests.classes}"&gt;
            &lt;include name="org/jboss/test/messaging/**"/&gt;
         &lt;/fileset&gt;
      &lt;/jar&gt;
   &lt;/target&gt;

   &lt;!--
      The values from imported files or set by the calling ant tasks will take precedence over
      the values specified below.
   --&gt;
   &lt;property name="junit.printsummary" value="true"/&gt;
   &lt;property name="junit.haltonerror" value="true"/&gt;
   &lt;property name="junit.haltonfailure" value="true"/&gt;
   &lt;property name="junit.fork" value="true"/&gt;
   &lt;property name="junit.includeantruntime" value="true"/&gt;
   &lt;property name="junit.timeout" value=""/&gt;
   &lt;property name="junit.showoutput" value="true"/&gt;
   &lt;property name="junit.jvm" value=""/&gt;
   &lt;property name="junit.jvm.options" value=""/&gt;
   &lt;property name="junit.formatter.usefile" value="false"/&gt;
   &lt;property name="junit.batchtest.todir" value="${build.tests.output}"/&gt;
   &lt;property name="junit.batchtest.haltonerror" value="true"/&gt;
   &lt;property name="junit.batchtest.haltonfailure" value="true"/&gt;
   &lt;property name="junit.batchtest.fork" value="true"/&gt;
   &lt;property name="junit.test.haltonfailure" value="true"/&gt;
   &lt;property name="junit.test.haltonerror" value="true"/&gt;

   &lt;target name="prepare-testdirs"
           description="Prepares the directory structure required by a test run"&gt;
      &lt;mkdir dir="${build.tests.output}"/&gt;
   &lt;/target&gt;

   &lt;target name="tests"
           depends="tests-jar, prepare-testdirs"
           description="Runs all available tests"&gt;

      &lt;junit printsummary="${junit.printsummary}"
             fork="${junit.fork}"
             includeantruntime="${junit.includeantruntime}"
             haltonerror="${junit.haltonerror}"
             haltonfailure="${junit.haltonfailure}"
             showoutput="${junit.showoutput}"&gt;
         &lt;classpath&gt;
            &lt;path refid="test.classpath"/&gt;
            &lt;pathelement location="${build.tests.lib}/${build.tests.archive}"/&gt;
            &lt;pathelement location="${module.root}/etc"/&gt;
         &lt;/classpath&gt;
         &lt;formatter type="plain" usefile="${junit.formatter.usefile}"/&gt;
         &lt;batchtest fork="${junit.batchtest.fork}"
                    todir="${junit.batchtest.todir}"
                    haltonfailure="${junit.batchtest.haltonfailure}"
                    haltonerror="${junit.batchtest.haltonerror}"&gt;
            &lt;formatter type="plain" usefile="${junit.formatter.usefile}"/&gt;
            &lt;fileset dir="${build.tests.classes}"&gt;
               &lt;include name="**/messaging/**/*Test.class"/&gt;
               &lt;exclude name="**/messaging/**/performance/**"/&gt;
            &lt;/fileset&gt;
         &lt;/batchtest&gt;
      &lt;/junit&gt;
   &lt;/target&gt;

   &lt;target name="test"
           depends="tests-jar, prepare-testdirs"
           description="Runs a single test, specified by its FQ class name via 'test.classname'"&gt;

      &lt;fail unless="test.classname"
            message="To run a single test, use: ./build.sh test -Dtest.clasname=org.package.MyTest"/&gt;

      &lt;junit printsummary="${junit.printsummary}"
             fork="${junit.fork}"
             includeantruntime="${junit.includeantruntime}"
             haltonerror="${junit.haltonerror}"
             haltonfailure="${junit.haltonfailure}"
             showoutput="${junit.showoutput}"&gt;
         &lt;classpath&gt;
            &lt;path refid="test.classpath"/&gt;
            &lt;pathelement location="${build.tests.lib}/${build.tests.archive}"/&gt;
            &lt;pathelement location="${module.root}/etc"/&gt;
         &lt;/classpath&gt;
         &lt;formatter type="plain" usefile="${junit.formatter.usefile}"/&gt;
         &lt;test name="${test.classname}"
               fork="${junit.batchtest.fork}"
               todir="${junit.batchtest.todir}"
               haltonfailure="${junit.test.haltonfailure}"
               haltonerror="${junit.test.haltonerror}"&gt;
         &lt;/test&gt;
      &lt;/junit&gt;
   &lt;/target&gt;

   &lt;target name="performance-tests"/&gt;

   &lt;target name="functional-tests" depends="tests"/&gt;

   &lt;!-- Clean up all build output --&gt;
   &lt;target name="clean"
      description="Cleans up most generated files."&gt;
      &lt;delete dir="${module.output}"/&gt;
   &lt;/target&gt;

   &lt;target name="clobber" depends="clean"/&gt;

&lt;/project&gt;</fo:inline></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e1566"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.4. Adding a test requiring a custom JBoss Configuration</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.4. Adding a test requiring a custom JBoss Configuration</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Custom JBoss configurations can be added using the <fo:inline font-family="monospace" font-size="0.8em">create-config</fo:inline> macro 
as demonstrated by this <fo:inline font-family="monospace" font-size="0.8em">tomcat-sso-tests</fo:inline> target. 
The <fo:inline font-family="monospace" font-size="0.8em">create-config</fo:inline> target has the following attributes/elements:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1580" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1581"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">baseconf</fo:inline> : The existing jboss configuration that will be used 
as the base configuration to copy</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1585"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">newconf</fo:inline> : The name of the new configuration being created</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1589"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:inline font-family="monospace" font-size="0.8em">patternset</fo:inline> : This is the equivalent of the standard patternset element 
which is used to restrict which content from the baseconf is to be copied into newconf.</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In addition, if you need to override configuration settings or add new content, 
this can be done by creating a directory with the same name as the 
<fo:inline font-family="monospace" font-size="0.8em">newconf</fo:inline> attribute value under the <fo:inline font-family="monospace" font-size="0.8em">testsuite/src/resource/tests-configs</fo:inline>
 directory. In this case, there is a <fo:inline font-family="monospace" font-size="0.8em">tomcat-sso</fo:inline> directory which adds some 
security files to the <fo:inline font-family="monospace" font-size="0.8em">conf</fo:inline> directory, removes the jbossweb sar dependencies 
it does not need, and enables the sso value in the <fo:inline font-family="monospace" font-size="0.8em">server.xml</fo:inline>:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

$ ls -R src/resources/test-configs/tomcat-sso
src/resources/test-configs/tomcat-sso:
CVS/  conf/  deploy/

src/resources/test-configs/tomcat-sso/conf:
CVS/  login-config.xml*  sso-roles.properties*  sso-users.properties*

src/resources/test-configs/tomcat-sso/deploy:
CVS/  jbossweb-tomcat50.sar/

src/resources/test-configs/tomcat-sso/deploy/jbossweb-tomcat50.sar:
CVS/  META-INF/  server.xml*

src/resources/test-configs/tomcat-sso/deploy/jbossweb-tomcat50.sar/META-INF:
CVS/  jboss-service.xml*
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The full <fo:inline font-family="monospace" font-size="0.8em">tomcat-sso-tests</fo:inline> target is shown here.</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve"><fo:inline font-family="monospace" font-size="0.8em">

   &lt;target name="tomcat-sso-tests"
      description="Tomcat tests requiring SSO configured"&gt;
      &lt;!-- Create the sso enabled tomcat config starting with the default config --&gt;
      &lt;create-config baseconf="default" newconf="tomcat-sso"&gt;
         &lt;patternset&gt;
            &lt;include name="conf/**" /&gt;
            &lt;include name="deploy/jbossweb*.sar/**" /&gt;
            &lt;include name="deploy/jmx-invoker-adaptor-server.sar/**" /&gt;
            &lt;include name="lib/**" /&gt;
         &lt;/patternset&gt;
      &lt;/create-config&gt;
      &lt;start-jboss conf="tomcat-sso" /&gt;
      &lt;wait-on-host /&gt;
      &lt;junit dir="${module.output}"
         printsummary="${junit.printsummary}"
         haltonerror="${junit.haltonerror}"
         haltonfailure="${junit.haltonfailure}"
         fork="${junit.fork}"
         timeout="${junit.timeout}"
         jvm="${junit.jvm}"&gt;

         &lt;jvmarg value="${junit.jvm.options}"/&gt;
         &lt;sysproperty key="jbosstest.deploy.dir" file="${build.lib}"/&gt;
         &lt;sysproperty key="build.testlog" value="${build.testlog}"/&gt;
         &lt;sysproperty key="log4j.configuration" value="file:${build.resources}/log4j.xml"/&gt;

         &lt;classpath&gt;
            &lt;pathelement location="${build.classes}"/&gt;
            &lt;pathelement location="${build.resources}"/&gt;
            &lt;path refid="tests.classpath"/&gt;
         &lt;/classpath&gt;

         &lt;formatter type="xml" usefile="${junit.formatter.usefile}"/&gt;

         &lt;batchtest todir="${build.reports}"
            haltonerror="${junit.batchtest.haltonerror}"
            haltonfailure="${junit.batchtest.haltonfailure}"
            fork="${junit.batchtest.fork}"&gt;

            &lt;fileset dir="${build.classes}"&gt;
               &lt;patternset refid="tc-sso.includes"/&gt;
            &lt;/fileset&gt;
         &lt;/batchtest&gt;
      &lt;/junit&gt;
      &lt;stop-jboss /&gt;
   &lt;/target&gt;
</fo:inline></fo:block></fo:block><fo:block id="d0e1622"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.5. Tests requiring Deployment Artifacts</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.5. Tests requiring Deployment Artifacts</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
This section describes how to write tests that depend on a deployed artifact such as
an EAR.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Deployment of any test deployments is done in the setup of the test. 
For example, the <fo:inline font-family="monospace" font-size="0.8em">HibernateEjbInterceptorUnitTestCase</fo:inline> would add a suite method to 
deploy/undeploy a <fo:inline font-family="monospace" font-size="0.8em">har-test.ear</fo:inline>:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

public class HibernateEjbInterceptorUnitTestCase extends JBossTestCase {
   /** Setup the test suite.
    */
   public static Test suite() throws Exception
   {
      return getDeploySetup(HibernateEjbInterceptorUnitTestCase.class, "har-test.ear");
   }
...
}</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
If you need to perform additional test setup/tearDown you can do that by extending the 
test setup class like this code from the <fo:inline font-family="monospace" font-size="0.8em">SRPUnitTestCase</fo:inline>:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

   /** Setup the test suite.
    */
   public static Test suite() throws Exception
   {
      TestSuite suite = new TestSuite();
      suite.addTest(new TestSuite(SRPUnitTestCase.class));

      // Create an initializer for the test suite
      TestSetup wrapper = new JBossTestSetup(suite)
      {
         protected void setUp() throws Exception
         {
            super.setUp();
            deploy(JAR);
            // Establish the JAAS login config
            String authConfPath = super.getResourceURL("security-srp/auth.conf");
            System.setProperty("java.security.auth.login.config", authConfPath);
         }
         protected void tearDown() throws Exception
         {
            undeploy(JAR);
            super.tearDown();
         }
      };
      return wrapper;
   }</fo:inline></fo:block></fo:block><fo:block id="d0e1648"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">8.6. JUnit for different test configurations</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">8.6. JUnit for different test configurations</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
We use the ant-task <fo:inline font-family="monospace" font-size="0.8em">&lt;junit&gt;</fo:inline> to execute tests. That task uses 
the concept of formatters. The actual implementation uses the XML formater by specifying 
type="xml" in the formatter attribute.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
If we need to execute the same test more than once, using this default formatter will 
always overwrite the results. For keeping these results alive, we have created another 
formatter. So, use these steps to keep JUnit results between different runs:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> 
Define the sysproperty <fo:inline font-family="monospace" font-size="0.8em">"jboss-junit-configuration"</fo:inline> during the jUnit calls. 
Change the formatter and set a different extension for keeping the files between different 
executions:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Set the class by <fo:inline font-family="monospace" font-size="0.8em">classname="org.jboss.ant.taskdefs.XMLJUnitMultipleResultFormatter</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Here is a complete example of the changes:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">

      &lt;junit dir="${module.output}"
         printsummary="${junit.printsummary}"
         haltonerror="${junit.haltonerror}"
         haltonfailure="${junit.haltonfailure}"
         fork="${junit.fork}"
         timeout="${junit.timeout}"
         jvm="${junit.jvm}"
         failureProperty="tests.failure"&gt;
          .... 
	 &lt;sysproperty key="jboss-junit-configuration" value="${jboss-junit-configuration}"/&gt;
         &lt;formatter classname="org.jboss.ant.taskdefs.XMLJUnitMultipleResultFormatter" usefile="${junit.formatter.usefile}" extension="-${jboss-junit-configuration}.xml" /&gt;
         .....
     &lt;junit/&gt;</fo:inline></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Support, Sales Force and Patch Management</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Support, Sales Force and Patch Management</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="support"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">9</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Support, Sales Force and Patch Management</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block id="d0e1676"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">9.1. An overview of the Support Process</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">9.1. An overview of the Support Process</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
JBoss has a very active and involved support process.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
As the support team gets a new case, it researches the issue and builds an appropriate
test case. An issue is opened in JIRA, the project management tool used by JBoss.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The onus now shifts onto the Development team, where a developer is tasked with the 
process of fixing the issue. The developer designs and codes the fix and checks in the 
fix to CVS, the version control system, on the appropriate Main/Patch branch. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The JBoss QA team now validates the issue. QA first runs the build against the branch, 
then creates the patch by pulling together the modified jars. Instructions on 
how to install the patch are written and thereafter the QA team installs and tests the 
patch. If the behaviour is as expected, the QA team promotes the code and the how-to
instructions to the Patch repository. At this point, the issue is resolved in JIRA.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The JBoss Support team then informs the customer that the issue is fixed. Once the client
has validated the issue, the Support Force marks the issue closed. Customer feedback on the
issue is also noted. At this point, the patch can also be made available to other customers 
if they are in need of a similar fix.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The following image describes the support process:</fo:block><fo:external-graphic src="images/supportprocessoverview.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block id="d0e1693"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">9.2. Patch Management</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">9.2. Patch Management</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Patch Management is mostly the work of the QA team at JBoss. A patch for an issue
is created by the QA team after running the build against the branch and updating 
the build with the modified jars. The QA team writes instructions on how-to install
a patch. The created patch is then installed and tested. If the behaviour satisfies
the issue requirements, the issue is marked resolved in JIRA. The patch install 
instructions and the patch itself is committed to the patch repository.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The following image describes the process:</fo:block><fo:external-graphic src="images/patchmanagement.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block id="d0e1702"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">9.3. Monitoring the Support Process</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">9.3. Monitoring the Support Process</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
JIRA is used for Project Management as well as proces monitoring. Once an issue is opened, 
its state is monitored until it is accepted and assigned to a developer. The developer 
then estimates the amount of time he / she would need to spend working on the issue, and
starts working on the issue. Once implementation is complete, it is handed off to QA. 
QA also makes estimates on the time required to install and test the patch. Monitoring of
both Development and QA estimates are done through JIRA.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The following figure illustrates the process:</fo:block><fo:external-graphic src="images/supportprocessmonitoring.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Weekly Status Reports</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Weekly Status Reports</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="statusreport"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">10</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Weekly Status Reports</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Every JBoss employee sends a weekly status report to his / her manager 
on the first working day of every week.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
This reporting scheme has been established to monitor work progress on
outstanding issues and bottlenecks if any.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">  
The format is as follows:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1720" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1721"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Work done last week:
<fo:block> This includes:
<fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1725" provisional-label-separation="0.2em" provisional-distance-between-starts="2em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1726"><fo:list-item-label end-indent="label-end()"><fo:block>a.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Development tasks accomplished and the approximate time overall.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1728"><fo:list-item-label end-indent="label-end()"><fo:block>b.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Support tasks undertaken and approximate time spent on support.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1730"><fo:list-item-label end-indent="label-end()"><fo:block>c.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Remote consulting tasks undertaken and approximate time spent on them.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1732"><fo:list-item-label end-indent="label-end()"><fo:block>d.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Any On-site consulting or training and approximate time taken.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1734"><fo:list-item-label end-indent="label-end()"><fo:block>e.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Preparing for on-site consulting or training and approximate time taken.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1736"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Work planned for the current work week.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1738"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Outstanding issues that require others' help.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1740"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Any other relevant issues.</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Documentation and the Documentation Process</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before"><fo:block><fo:block>Documentation and the Documentation Process</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif" margin-left="-5em" margin-right="-5em"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row height="14pt"><fo:table-cell text-align="left" display-align="after"><fo:block>JBoss 2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer</fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="after"><fo:block><fo:page-number/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="documents"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">11</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Documentation and the Documentation Process</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block id="d0e1745"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.1. JBoss Documentation</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.1. JBoss Documentation</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JBoss Inc. provides a wide selection of documentation that provides in-depth 
coverage across the federation of Professional Open Source projects. All documentation 
is now free. Several versions of our documentation require registration to the JBoss 
website, which is also free. If you cannot find the answers that you are looking for, 
you can get additional support from the following sources:</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1750" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1751"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Buying <fo:basic-link external-destination="http://www.jboss.com/services/profsupport">
Professional Support</fo:basic-link><fo:inline hyphenate="false"> [http://www.jboss.com/services/profsupport]</fo:inline> from JBoss Inc. and getting answers from 
the experts behind the technology.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1756"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Searching the <fo:basic-link external-destination="http://www.jboss.com/wiki/wiki.jsp">Wiki</fo:basic-link><fo:inline hyphenate="false"> [http://www.jboss.com/wiki/wiki.jsp]</fo:inline>.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1761"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Reviewing the <fo:basic-link external-destination="http://www.jboss.com/index.html?module=bb">Forums</fo:basic-link><fo:inline hyphenate="false"> [http://www.jboss.com/index.html?module=bb]</fo:inline>.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1766"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Watching <fo:basic-link external-destination="http://www.jboss.org/services/online_education">JBoss Webinars</fo:basic-link><fo:inline hyphenate="false"> [http://www.jboss.org/services/online_education]</fo:inline>.</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A complete listing of the documentation by project can be found on the
<fo:basic-link external-destination="http://www.jboss.com/docs/index">Document Index</fo:basic-link><fo:inline hyphenate="false"> [http://www.jboss.com/docs/index]</fo:inline>.</fo:block></fo:block><fo:block id="d0e1776"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.2. Producing and Maintaining Quality Documentation</fo:marker><fo:block font-size="16.5pt" space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2. Producing and Maintaining Quality Documentation</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For JBoss developers and documentation writers, JIRA and docbook are the two key tools to integrate the documentation process in the development workflow. Now let's clarify documentation responsibilities and adopt a simple process to guarantee our documentation is always accurate and up-to-date.</fo:block><fo:block id="d0e1781"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.2.1. Responsibilities</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.1. Responsibilities</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e1784"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:block font-size="11pt" space-before.optimum="0.4em" space-before.minimum="0.4em" space-before.maximum="0.4em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.1.1. The product team</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The development team is responsible for product-specific documentation. Core developers need to maintain the following documents.</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1789" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1790"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>The product reference guide</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1792"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>The Javadoc for key APIs and all annotations</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1794"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Annotated test cases</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1796"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Optional user guides for a specific product</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1798"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Optional flash demo for a specific product</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Tasks related to producing those documents are managed within the development project's JIRA module. Most of these tasks are assigned to developers within the project but some of them are assigned to documentation team, as we will see in a minute.</fo:block></fo:block><fo:block id="d0e1802"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:block font-size="11pt" space-before.optimum="0.4em" space-before.minimum="0.4em" space-before.maximum="0.4em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.1.2. The documentation team</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The documentation team (Michael Yuan and Norman Richards) is responsible for all "cross-cutting" documents that cover several projects, as well as tutorial / technical evangelism materials. Examples of such documents are as follows.</fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1807" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1808"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Overall server guide</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1810"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Trail maps (interactive tutorials)</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1812"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Sample applications</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1814"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>Books and articles</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1816"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>The "what's new" guide</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1818"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>The "best practice" guide</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1820"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>etc.</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Tasks related to those documents are managed inside the "documentation" JIRA module. Developers are welcome to raise issues there if you see errors and/or coverage gaps in existing documents.</fo:block></fo:block></fo:block><fo:block id="d0e1824"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.2.2. Product documentation review</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.2. Product documentation review</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Before each product release, the documentation team needs to review all the documents maintained by project's core developers (e.g., reference guide and Javadoc). Please create a review task for each document within your project and assign it to a member in the documentation team. The documentation team will read the draft and use that JIRA task to track any issues.</fo:block></fo:block><fo:block id="d0e1829"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.2.3. Keep the documentation up-to-date</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.3. Keep the documentation up-to-date</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Since our technology is fast evolving, it is crucial for us to keep the documents up-to-date. If you have any development task that might affect the external interface or observed behavior of the product, please check the appropriate "affects" check box at the bottom of the JIRA task information page.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1834"><fo:block><fo:external-graphic src="images/createdoctask.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 11.1. Check the "affects" boxes for a task that changes the public API</fo:block></fo:block><fo:list-block space-before.optimum="0.8em" space-before.minimum="0.8em" space-before.maximum="0.8em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em" id="d0e1838" provisional-label-separation="0.2em" provisional-distance-between-starts="1.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1839"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>The project's documentation maintainer searches those tagged tasks periodically to update the reference guide etc.</fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1841"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>The documentation team searches those tagged tasks periodically to update the cross-product documents.</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1843"><fo:block><fo:external-graphic src="images/finddoctask.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="11pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 11.2. Find all tasks that affect docs</fo:block></fo:block></fo:block><fo:block id="d0e1847"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.2.4. Articles and books</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.4. Articles and books</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The documentation team also serves as our internal editors for technical articles and books in the JBoss book series. If you are interested in writing articles or books, please let us know. Even if you do not have time to write a whole book, we might still find books / articles you can contribute to. So, it is important to keep us informed about your interests in this area.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The documentation team will help develop proposals and manage the relationship with outside editors. If you sign up to write the article / book, a JIRA task in the documentation module would be created and assigned to you to keep track of the progress.</fo:block></fo:block><fo:block id="d0e1854"><fo:block><fo:block><fo:block keep-together="always" margin-left="0pc" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em"><fo:marker marker-class-name="section.head.marker">11.2.5. Authoring JBoss Documentation using DocBook</fo:marker><fo:block font-size="13.75pt" space-before.optimum="0.6em" space-before.minimum="0.6em" space-before.maximum="0.6em" space-after.optimum="0.1em" space-after.minimum="0.1em" space-after.maximum="0.1em">11.2.5. Authoring JBoss Documentation using DocBook</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
Writing JBoss documentation using the centralized docbook system is really easy. 
You first need to check out the docbook-support top level module:</fo:block><fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" border-color="#444444" border-style="solid" border-width="0.1pt" padding-top="0.5em" padding-left="0.5em" padding-right="0.5em" padding-bottom="0.5em" margin-left="0.5em" margin-right="0.5em" font-family="monospace" font-size="0.8em" text-align="start" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve">
<fo:inline font-family="monospace" font-size="0.8em">
cvs -d:ext:yourname@cvs.sf.net:/cvsroot/jboss co docbook-support. 
</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
In the module, you can find the <fo:inline font-family="monospace" font-size="0.8em">docs/guide</fo:inline> directory. Copy that directory to 
the <fo:inline font-family="monospace" font-size="0.8em">docs/</fo:inline> directory in your own project and use it as a template for your 
own docbooks.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For more information about how the directories and build tasks are organized, 
check out the guide doc in the docbook-support module:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The PDF version is <fo:inline font-family="monospace" font-size="0.8em">docs/guide/build/en/pdf/jboss-docbook.pdf</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
The HTML version is <fo:inline font-family="monospace" font-size="0.8em">docs/guide/build/en/html/index.html</fo:inline></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence></fo:root>