<?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="build-reference"><fox:label>Chapter 5. Build Reference</fox:label><fox:outline internal-destination="d0e494"><fox:label>5.1. Overview and Concepts</fox:label></fox:outline><fox:outline internal-destination="d0e503"><fox:label>5.2. Component Build</fox:label><fox:outline internal-destination="d0e508"><fox:label>5.2.1. Component Info Elements Reference</fox:label></fox:outline><fox:outline internal-destination="d0e597"><fox:label>5.2.2. Component Definition Elements Reference</fox:label><fox:outline internal-destination="d0e636"><fox:label>5.2.2.1. </fox:label></fox:outline></fox:outline></fox:outline><fox:outline internal-destination="d0e639"><fox:label>5.3. How to Synchronize and Build</fox:label></fox:outline><fox:outline internal-destination="component-walkthrough"><fox:label>5.4. Tutorial: Anatomy of a Component Build</fox:label><fox:outline internal-destination="d0e668"><fox:label>5.4.1. Top Level Build</fox:label></fox:outline><fox:outline internal-destination="d0e701"><fox:label>5.4.2. Component Level Build</fox:label><fox:outline internal-destination="d0e748"><fox:label>5.4.2.1. Defining an Artifact</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e769"><fox:label>5.4.3. Placing an Artifact in the Release</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e787"><fox:label>5.5. How to Add a Component to the Repository</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="cvsaccess"><fox:label>Chapter 6. CVS Access for JBoss Sources</fox:label><fox:outline internal-destination="d0e828"><fox:label>6.1. Obtaining a CVS Client</fox:label></fox:outline><fox:outline internal-destination="d0e843"><fox:label>6.2. Anonymous CVS Access</fox:label></fox:outline><fox:outline internal-destination="d0e884"><fox:label>6.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 7. Coding Conventions</fox:label><fox:outline internal-destination="d0e939"><fox:label>7.1. Templates</fox:label><fox:outline internal-destination="d0e952"><fox:label>7.1.1. Importing Templates into the Eclipse IDE</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e966"><fox:label>7.2. Some more general guidelines</fox:label></fox:outline><fox:outline internal-destination="d0e979"><fox:label>7.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 8. Logging Conventions</fox:label><fox:outline internal-destination="d0e1014"><fox:label>8.1. Obtaining a Logger</fox:label></fox:outline><fox:outline internal-destination="d0e1025"><fox:label>8.2. Logging Levels</fox:label></fox:outline><fox:outline internal-destination="d0e1050"><fox:label>8.3. Log4j Configuration</fox:label><fox:outline internal-destination="d0e1061"><fox:label>8.3.1. Separating Application Logs</fox:label></fox:outline><fox:outline internal-destination="d0e1080"><fox:label>8.3.2. Specifying appenders and filters</fox:label></fox:outline><fox:outline internal-destination="d0e1095"><fox:label>8.3.3. Logging to a Seperate Server</fox:label></fox:outline><fox:outline internal-destination="d0e1202"><fox:label>8.3.4. Key JBoss Subsystem Categories</fox:label></fox:outline><fox:outline internal-destination="d0e1290"><fox:label>8.3.5. Redirecting Category Output</fox:label></fox:outline><fox:outline internal-destination="d0e1310"><fox:label>8.3.6. Using your own log4j.xml file - class loader scoping</fox:label></fox:outline><fox:outline internal-destination="d0e1365"><fox:label>8.3.7. Using your own log4j.properties file - class loader scoping</fox:label></fox:outline><fox:outline internal-destination="d0e1464"><fox:label>8.3.8. Using your own log4j.xml file - Log4j RepositorySelector</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1506"><fox:label>8.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 9. JBoss Test Suite</fox:label><fox:outline internal-destination="d0e1585"><fox:label>9.1. How To Run the JBoss Testsuite</fox:label><fox:outline internal-destination="d0e1590"><fox:label>9.1.1. Build JBoss</fox:label></fox:outline><fox:outline internal-destination="d0e1605"><fox:label>9.1.2. Build and Run the Testsuite</fox:label></fox:outline><fox:outline internal-destination="d0e1624"><fox:label>9.1.3. Running One Test at a Time</fox:label></fox:outline><fox:outline internal-destination="testsuite-clustering-tests-configuration"><fox:label>9.1.4. Clustering Tests Configuration</fox:label></fox:outline><fox:outline internal-destination="d0e1659"><fox:label>9.1.5. Viewing the Results</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1670"><fox:label>9.2. Testsuite Changes</fox:label><fox:outline internal-destination="d0e1678"><fox:label>9.2.1. Targets</fox:label></fox:outline><fox:outline internal-destination="d0e1737"><fox:label>9.2.2. Files</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1795"><fox:label>9.3. Functional Tests</fox:label><fox:outline internal-destination="d0e1838"><fox:label>9.3.1. Integration with Testsuite</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e1901"><fox:label>9.4. Adding a test requiring a custom JBoss Configuration</fox:label></fox:outline><fox:outline internal-destination="d0e1957"><fox:label>9.5. Tests requiring Deployment Artifacts</fox:label></fox:outline><fox:outline internal-destination="d0e1983"><fox:label>9.6. JUnit for different test configurations</fox:label></fox:outline><fox:outline internal-destination="testsuite-exclude-bad-tests"><fox:label>9.7. Excluding Bad Tests</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="support"><fox:label>Chapter 10. Support and Patch Management</fox:label><fox:outline internal-destination="support-patch-overview"><fox:label>10.1. An overview of the Support Patch Process</fox:label><fox:outline internal-destination="d0e2022"><fox:label>10.1.1. Development Phase</fox:label></fox:outline><fox:outline internal-destination="d0e2063"><fox:label>10.1.2. QA Phase</fox:label></fox:outline><fox:outline internal-destination="d0e2079"><fox:label>10.1.3. JBN Phase</fox:label></fox:outline></fox:outline><fox:outline internal-destination="patch-howto-template"><fox:label>10.2. Support Patch Instructions Template</fox:label></fox:outline><fox:outline internal-destination="howto-qa-support-patch"><fox:label>10.3. How To QA a Support Patch</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="statusreport"><fox:label>Chapter 11. Weekly Status Reports</fox:label></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="documents"><fox:label>Chapter 12. Documentation and the Documentation Process</fox:label><fox:outline internal-destination="d0e2138"><fox:label>12.1. JBoss Documentation</fox:label></fox:outline><fox:outline internal-destination="d0e2169"><fox:label>12.2. Producing and Maintaining Quality Documentation</fox:label><fox:outline internal-destination="d0e2174"><fox:label>12.2.1. Responsibilities</fox:label><fox:outline internal-destination="d0e2177"><fox:label>12.2.1.1. The product team</fox:label></fox:outline><fox:outline internal-destination="d0e2195"><fox:label>12.2.1.2. The documentation team</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e2217"><fox:label>12.2.2. Product documentation review</fox:label></fox:outline><fox:outline internal-destination="d0e2222"><fox:label>12.2.3. Keep the documentation up-to-date</fox:label></fox:outline><fox:outline internal-destination="d0e2240"><fox:label>12.2.4. Articles and books</fox:label></fox:outline><fox:outline internal-destination="d0e2247"><fox:label>12.2.5. Authoring JBoss Documentation using DocBook</fox:label></fox:outline></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="qalab"><fox:label>Chapter 13. JBoss QA Lab Guide</fox:label><fox:outline internal-destination="d0e2279"><fox:label>13.1. Quick Start Guide</fox:label></fox:outline><fox:outline internal-destination="d0e2290"><fox:label>13.2. Lab Setup</fox:label><fox:outline internal-destination="d0e2293"><fox:label>13.2.1. Topology</fox:label></fox:outline><fox:outline internal-destination="d0e2300"><fox:label>13.2.2. File System</fox:label></fox:outline><fox:outline internal-destination="d0e2319"><fox:label>13.2.3. Databases</fox:label></fox:outline><fox:outline internal-destination="d0e2383"><fox:label>13.2.4. Servers</fox:label></fox:outline></fox:outline><fox:outline internal-destination="d0e2569"><fox:label>13.3. QA Lab FAQ</fox:label></fox:outline></fox:outline><fox:outline xmlns:fox="http://xml.apache.org/fop/extensions" internal-destination="serialization"><fox:label>Chapter 14. Serialization</fox:label><fox:outline internal-destination="performance-externalization"><fox:label>14.1. Performance Consideration - Use Externalization</fox:label></fox:outline><fox:outline internal-destination="d0e2629"><fox:label>14.2. Version Compatibility</fox:label><fox:outline internal-destination="d0e2643"><fox:label>14.2.1. In Externalizable Objects</fox:label></fox:outline><fox:outline internal-destination="d0e2659"><fox:label>14.2.2. Regular Serialization</fox:label></fox:outline><fox:outline internal-destination="d0e2675"><fox:label>14.2.3. Compatible and Incompatible Changes</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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="build-reference">5.  Build Reference</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-reference"><fo:page-number-citation ref-id="build-reference"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.build-reference" 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="d0e494">5.1.  Overview and Concepts</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="d0e494"><fo:page-number-citation ref-id="d0e494"/></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="d0e503">5.2.  Component 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="d0e503"><fo:page-number-citation ref-id="d0e503"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e503" 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="d0e508">5.2.1.  Component Info Elements Reference</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="d0e508"><fo:page-number-citation ref-id="d0e508"/></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="d0e597">5.2.2.  Component Definition Elements Reference</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="d0e597"><fo:page-number-citation ref-id="d0e597"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e597" 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="d0e636">5.2.2.1.  </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="d0e636"><fo:page-number-citation ref-id="d0e636"/></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="d0e639">5.3.  How to Synchronize and 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="d0e639"><fo:page-number-citation ref-id="d0e639"/></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="component-walkthrough">5.4.  Tutorial: Anatomy of a Component 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="component-walkthrough"><fo:page-number-citation ref-id="component-walkthrough"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.component-walkthrough" 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="d0e668">5.4.1.  Top Level 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="d0e668"><fo:page-number-citation ref-id="d0e668"/></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="d0e701">5.4.2.  Component Level 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="d0e701"><fo:page-number-citation ref-id="d0e701"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e701" 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="d0e748">5.4.2.1.  Defining an Artifact</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="d0e748"><fo:page-number-citation ref-id="d0e748"/></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="d0e769">5.4.3.  Placing an Artifact in the Release</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="d0e769"><fo:page-number-citation ref-id="d0e769"/></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="d0e787">5.5.  How to Add a Component to the Repository</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="d0e787"><fo:page-number-citation ref-id="d0e787"/></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="cvsaccess">6.  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="d0e828">6.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="d0e828"><fo:page-number-citation ref-id="d0e828"/></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="d0e843">6.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="d0e843"><fo:page-number-citation ref-id="d0e843"/></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="d0e884">6.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="d0e884"><fo:page-number-citation ref-id="d0e884"/></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">7.  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="d0e939">7.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="d0e939"><fo:page-number-citation ref-id="d0e939"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e939" 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="d0e952">7.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="d0e952"><fo:page-number-citation ref-id="d0e952"/></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="d0e966">7.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="d0e966"><fo:page-number-citation ref-id="d0e966"/></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.  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="d0e979"><fo:page-number-citation ref-id="d0e979"/></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">8.  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="d0e1014">8.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="d0e1014"><fo:page-number-citation ref-id="d0e1014"/></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="d0e1025">8.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="d0e1025"><fo:page-number-citation ref-id="d0e1025"/></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="d0e1050">8.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="d0e1050"><fo:page-number-citation ref-id="d0e1050"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1050" 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="d0e1061">8.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="d0e1061"><fo:page-number-citation ref-id="d0e1061"/></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="d0e1080">8.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="d0e1080"><fo:page-number-citation ref-id="d0e1080"/></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="d0e1095">8.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="d0e1095"><fo:page-number-citation ref-id="d0e1095"/></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="d0e1202">8.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="d0e1202"><fo:page-number-citation ref-id="d0e1202"/></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="d0e1290">8.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="d0e1290"><fo:page-number-citation ref-id="d0e1290"/></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="d0e1310">8.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="d0e1310"><fo:page-number-citation ref-id="d0e1310"/></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="d0e1365">8.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="d0e1365"><fo:page-number-citation ref-id="d0e1365"/></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="d0e1464">8.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="d0e1464"><fo:page-number-citation ref-id="d0e1464"/></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="d0e1506">8.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="d0e1506"><fo:page-number-citation ref-id="d0e1506"/></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">9.  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="d0e1585">9.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="d0e1585"><fo:page-number-citation ref-id="d0e1585"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1585" 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="d0e1590">9.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="d0e1590"><fo:page-number-citation ref-id="d0e1590"/></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="d0e1605">9.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="d0e1605"><fo:page-number-citation ref-id="d0e1605"/></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="d0e1624">9.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="d0e1624"><fo:page-number-citation ref-id="d0e1624"/></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="testsuite-clustering-tests-configuration">9.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="testsuite-clustering-tests-configuration"><fo:page-number-citation ref-id="testsuite-clustering-tests-configuration"/></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="d0e1659">9.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="d0e1659"><fo:page-number-citation ref-id="d0e1659"/></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="d0e1670">9.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="d0e1670"><fo:page-number-citation ref-id="d0e1670"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1670" 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="d0e1678">9.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="d0e1678"><fo:page-number-citation ref-id="d0e1678"/></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="d0e1737">9.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="d0e1737"><fo:page-number-citation ref-id="d0e1737"/></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="d0e1795">9.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="d0e1795"><fo:page-number-citation ref-id="d0e1795"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e1795" 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="d0e1838">9.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="d0e1838"><fo:page-number-citation ref-id="d0e1838"/></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="d0e1901">9.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="d0e1901"><fo:page-number-citation ref-id="d0e1901"/></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="d0e1957">9.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="d0e1957"><fo:page-number-citation ref-id="d0e1957"/></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="d0e1983">9.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="d0e1983"><fo:page-number-citation ref-id="d0e1983"/></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="testsuite-exclude-bad-tests">9.7.  Excluding Bad 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="testsuite-exclude-bad-tests"><fo:page-number-citation ref-id="testsuite-exclude-bad-tests"/></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">10.  Support 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="support-patch-overview">10.1.  An overview of the Support Patch 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="support-patch-overview"><fo:page-number-citation ref-id="support-patch-overview"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.support-patch-overview" 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="d0e2022">10.1.1.  Development Phase</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="d0e2022"><fo:page-number-citation ref-id="d0e2022"/></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="d0e2063">10.1.2.  QA Phase</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="d0e2063"><fo:page-number-citation ref-id="d0e2063"/></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="d0e2079">10.1.3.  JBN Phase</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="d0e2079"><fo:page-number-citation ref-id="d0e2079"/></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="patch-howto-template">10.2.  Support Patch Instructions Template</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="patch-howto-template"><fo:page-number-citation ref-id="patch-howto-template"/></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="howto-qa-support-patch">10.3.  How To QA a Support Patch</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="howto-qa-support-patch"><fo:page-number-citation ref-id="howto-qa-support-patch"/></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">11.  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">12.  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="d0e2138">12.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="d0e2138"><fo:page-number-citation ref-id="d0e2138"/></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="d0e2169">12.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="d0e2169"><fo:page-number-citation ref-id="d0e2169"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e2169" 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="d0e2174">12.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="d0e2174"><fo:page-number-citation ref-id="d0e2174"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e2174" 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="d0e2177">12.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="d0e2177"><fo:page-number-citation ref-id="d0e2177"/></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="d0e2195">12.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="d0e2195"><fo:page-number-citation ref-id="d0e2195"/></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="d0e2217">12.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="d0e2217"><fo:page-number-citation ref-id="d0e2217"/></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="d0e2222">12.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="d0e2222"><fo:page-number-citation ref-id="d0e2222"/></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="d0e2240">12.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="d0e2240"><fo:page-number-citation ref-id="d0e2240"/></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="d0e2247">12.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="d0e2247"><fo:page-number-citation ref-id="d0e2247"/></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="qalab">13.  JBoss QA Lab Guide</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="qalab"><fo:page-number-citation ref-id="qalab"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.qalab" 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="d0e2279">13.1.  Quick Start Guide</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="d0e2279"><fo:page-number-citation ref-id="d0e2279"/></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="d0e2290">13.2.  Lab Setup</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="d0e2290"><fo:page-number-citation ref-id="d0e2290"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e2290" 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="d0e2293">13.2.1.  Topology</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="d0e2293"><fo:page-number-citation ref-id="d0e2293"/></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="d0e2300">13.2.2.  File System</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="d0e2300"><fo:page-number-citation ref-id="d0e2300"/></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="d0e2319">13.2.3.  Databases</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="d0e2319"><fo:page-number-citation ref-id="d0e2319"/></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="d0e2383">13.2.4.  Servers</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="d0e2383"><fo:page-number-citation ref-id="d0e2383"/></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="d0e2569">13.3.  QA Lab FAQ</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="d0e2569"><fo:page-number-citation ref-id="d0e2569"/></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="serialization">14.  Serialization</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="serialization"><fo:page-number-citation ref-id="serialization"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.serialization" 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="performance-externalization">14.1.  Performance Consideration - Use Externalization</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="performance-externalization"><fo:page-number-citation ref-id="performance-externalization"/></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="d0e2629">14.2.  Version 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="d0e2629"><fo:page-number-citation ref-id="d0e2629"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e1.d0e2629" 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="d0e2643">14.2.1.  In Externalizable Objects</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="d0e2643"><fo:page-number-citation ref-id="d0e2643"/></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="d0e2659">14.2.2.  Regular Serialization</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="d0e2659"><fo:page-number-citation ref-id="d0e2659"/></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="d0e2675">14.2.3.  Compatible and Incompatible 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="d0e2675"><fo:page-number-citation ref-id="d0e2675"/></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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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>Build Reference</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 Reference</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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-reference"><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">Build Reference</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 reference guide covers how to use the JBossBuild system.</fo:block><fo:block id="d0e494"><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. Overview and Concepts</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. Overview and Concepts</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">JBossBuild is a declarative build system.  Instead of having
    to define each step in the build process, JBossBuild allows a
    developer to declare the inputs and outputs of a build.
    JBossBuild then uses these definitions to dynamically generate the
    Ant targets needed to implement that definition.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JBossBuild is implemented as a set of Ant types and tasks,
    and target definitions. The types (components, componentdefs,
    artifacts, etc.) are declared by the developer in the build.xml.
    These definitions are then combined with the targetdefs in
    tasks.xml (under tools/etc/jbossbuild) to produce the generated
    ant targets.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two kinds of build definitions:
    toplevel, and component.  The toplevel builds define the
    components of a release and where the artifacts of each component
    should be placed in the release.  The component builds define how
    each artifact is built, the sources of those artifacts, and any
    dependencies of thoses sources.</fo:block></fo:block><fo:block id="d0e503"><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. Component Build</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. Component 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 component build is made up of two parts: the component
      info (component-info.xml) and the component definition
      (build.xml or jbossbuild.xml).  The component info is much like
      a declaration or manifest of the component.  It defines what the
      expected outputs (artifacts) of the components are.  The
      component definition specifies how these artifacts are built
      from source code.</fo:block><fo:block id="d0e508"><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.1. Component Info Elements Reference</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">5.2.1. Component Info Elements Reference</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></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="d0e511"><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 5.1. Component</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-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"><fo:block><fo:inline font-style="italic">Name:</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"><fo:block>component</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"><fo:block><fo:inline font-style="italic">Purpose:</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"><fo:block>Declares a project component.</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"><fo:block><fo:inline font-style="italic">Attributes:</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" text-align="center" display-align="center" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black"><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"><fo:block>id</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"><fo:block>The unique identifier for this component.  This should be
                    the same as its directory name in the online repository
                    and in the local directory structure.</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"><fo:block>module</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"><fo:block>The CVS module the component source should be checked out
                    from.</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"><fo:block>version</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt"><fo:block>The version of the component.  This version is used when 
             retreiving artifacts from the repository.  Artifacts are stored 
             in the repository under the directory [id]/[version].</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></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="d0e547"><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 5.2. Artifact</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-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"><fo:block><fo:inline font-style="italic">Name:</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"><fo:block>artifact</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"><fo:block><fo:inline font-style="italic">Purpose:</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"><fo:block>Declares an artifact (jar, war, config file)
                              which is a product of the component build.</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"><fo:block><fo:inline font-style="italic">Attributes:</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" text-align="center" display-align="center" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black"><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"><fo:block>id</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt"><fo:block>The unique identifier for this artifact. The id is the same 
                    as the name of the file. This id should be unique across all 
                    components in a given build.</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></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="d0e573"><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 5.3. Export</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-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"><fo:block><fo:inline font-style="italic">Name:</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"><fo:block>export</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"><fo:block><fo:inline font-style="italic">Purpose:</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"><fo:block>Lists the default artifacts which should be on the classpath
                               when this component is included by another.</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"><fo:block><fo:inline font-style="italic">Example:</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt"><fo:block>
      &lt;export&gt; &lt;include input="jnpserver.jar"/&gt; &lt;/export&gt;
                         </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block><fo:block id="d0e597"><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.2. Component Definition Elements Reference</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">5.2.2. Component Definition Elements Reference</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></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="d0e600"><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 5.4. Component</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-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"><fo:block><fo:inline font-style="italic">Name:</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"><fo:block>component</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"><fo:block><fo:inline font-style="italic">Purpose:</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"><fo:block>Declares a project component.</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"><fo:block><fo:inline font-style="italic">Attributes:</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt" text-align="center" display-align="center" border-bottom-width="0.1pt" border-bottom-style="solid" border-bottom-color="black"><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"><fo:block>id</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"><fo:block>The unique identifier for this component.  This should be
                    the same as its directory name in the online repository
                    and in the local directory structure.</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"><fo:block>module</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"><fo:block>The CVS module the component source should be checked out
                    from.</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"><fo:block>version</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="4pt" padding-bottom="4pt"><fo:block>The version of the component.  This version is used when 
             retreiving artifacts from the repository.  Artifacts are stored 
             in the repository under the directory [id]/[version].</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="d0e636"><fo:block><fo:block/><fo:block/></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e639"><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. How to Synchronize and Build</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. How to Synchronize and 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">You can now partially build jboss-head from the repository
     with the new build system.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You probably want this in it's own 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">
mkdir jboss-dir
cd jboss-dir	
     </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Then, just check out the toplevel build and the tools 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">
cvs co jbossas
cvs co tools	
     </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You will need to set your cvs info in jbossas/local.properties:</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">
cvs.prefix=:ext:rcampbell	
     </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Note, you will need ssh-agent setup to run cvs without
     entering a password for now.  Now you are ready to synchronize and
     build:</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">
ant sychronize
ant build
output/jboss-5.0.0alpha/bin/run.sh -c all
     </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The synchronize target will checkout the source components from cvs and download thirdparty components from the repository. </fo:block></fo:block><fo:block id="component-walkthrough"><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.4. Tutorial: Anatomy of a Component Build</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.4. Tutorial: Anatomy of a Component 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">In this section, we take a component - JBoss Deployment
(jboss-head/deployment) and demonstrate how to incorporate it into the
JBossAS release.  This document assumes you have checked out the AS as
outlined here.</fo:block><fo:block id="d0e668"><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.4.1. Top Level 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">5.4.1. Top Level 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">First, we need to add the component to the toplevel build under
jbossas/jbossbuild.xml.  The ordering of the components is
significant; the deployement module must be placed *after* the other source
components it depends on (ie, common).  The ordering of the components
in the file dictates the order the components will be built.  So, in
this case, we add the component element at the end of the other JBoss
components, but before the thirdparty components.</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">

      &lt;!-- ============================================================ --&gt;
      &lt;!-- Deployment                                                   --&gt;
      &lt;!-- ============================================================ --&gt;
      &lt;component id="deployment"
                 module="jboss-deployment"
                 version="5.0-SNAPSHOT"&gt;
      &lt;/component&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">At this point, we know that the deployment module will come from
the jboss-deployment module in cvs -- represented by the module
attribute.  We give it the same version as the other components in
jboss-head.  With this one definition, we have several new targets in
our toplevel build:</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">

bash-2.05b$ ant -projecthelp | grep deployment
 all.deployment                       Build All for the component deployment
 api.deployment                       Javadoc for the component deployment
 build.deployment                     Build for the component deployment
 clean.deployment                     Clean for the component deployment
 commit.deployment                    Commit for the component deployment
 doc.deployment                       Documentation for the component deployment
 rebuild.deployment                   Synchronize then build for the component deployment
 rebuildall.deployment                Synchronize then build all for the component deployment
 runtest.deployment                   Run tests for the component deployment
 synchronize.after.deployment         After synchronization processing for the component deployment
 synchronize.deployment               Synchronize for the component deployment
 test.deployment                      Build and run the tests for the component deployment

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">These are all dynamically generated by jbossbuild based on the
defintion we have provided.  At the moment, we are only concerned with
the synchronize target since we still don't have the source for this
component.  So let's see what the synchronize target will do before we
try to call it</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To see what a target will do before you call it, you can use the
"show" target and pass it a property of which target you want to see.</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">

bash-2.05b$ ant show -Dshow=synchronize.deployment
Buildfile: build.xml

show:
&lt;!-- Synchronize for the component deployment --&gt;
&lt;target name="synchronize.deployment"&gt;
   &lt;mkdir dir="C:\projects\newbuild-jboss\thirdparty\deployment"/&gt;
    &lt;get verbose="true" dest="C:\projects\newbuild-jboss\thirdparty\deployment/component-info.xml" 
         usetimestamp="true" 
         src="http://cruisecontrol.jboss.com/repository/deployment/5.0-SNAPSHOT/component-info.xml"/&gt;

&lt;/target&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Whoops! Calling this target will download the component to thirdparty,
which is not what we want at this point.  In order to get the source
for this component, we will want to set a property in the
jbossas/synchronize.properties 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">

checkout.deployment=true

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now, when we show the deployment.synchronize target we see that it
intends to pull the source from cvs:</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">

bash-2.05b$ ant show -Dshow=synchronize.deployment
Buildfile: build.xml

show:
&lt;!-- Synchronize for the component deployment --&gt;
&lt;target name="synchronize.deployment"&gt;
&lt;cvs dest="C:\projects\newbuild-jboss"&gt;
  &lt;commandline&gt;
    &lt;argument value="-d"/&gt;
    &lt;argument value=":ext:rcampbell@cvs.forge.jboss.com:/cvsroot/jboss"/&gt;
    &lt;argument value="co"/&gt;
    &lt;argument value="-d"/&gt;
    &lt;argument value="deployment"/&gt;
    &lt;argument value="jboss-deployment"/&gt;
  &lt;/commandline&gt;
&lt;/cvs&gt;
&lt;/target&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ok, so let's go ahead and call this target to checkout the module into
our tree (../deployment).</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">

bash-2.05b$ ant synchronize.deployment
Buildfile: build.xml

synchronize.deployment:
      [cvs] Using cvs passfile: c:\.cvspass
      [cvs] cvs checkout: Updating deployment
      [cvs] U deployment/.classpath
      [cvs] U deployment/.cvsignore
...

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">We could have also called the toplevel synchronize target if we wanted
to update (or checkout) all the other components and thirdparty
artifacts.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ok, now that we have the source, we can get into creating a
component-level build.  The toplevel build in jbossas/jbossbuild.xml
defines all the components, their versions, and the locations of their
artifacts.  However, the component-level build defines how those
artifacts are composed of java classes and other resources.</fo:block></fo:block><fo:block id="d0e701"><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.4.2. Component Level 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">5.4.2. Component Level 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">Let's start out by just creating a minimal definition and see what
happens.  First, we want to create our component-info.xml under the
deployment module.  You can think of this file as the interface for
this component.  It will be uploaded to the repository along with the
artifacts of this component so that other components may reference it.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For now, we can copy the entry from jbossas/jbossbuild.xml.</fo:block>

deployment/component-info.xml
<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">

&lt;project name="deployment-component-info"&gt;

   &lt;!-- ============================================================ --&gt;
   &lt;!-- Deployment                                                   --&gt;
   &lt;!-- ============================================================ --&gt;
   &lt;component id="deployment"
              module="jboss-deployment"
              version="5.0-SNAPSHOT"&gt;
   &lt;/component&gt;

  
&lt;/project&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the component is declared, it needs to be defined.  This is the
responsibility of the jbossbuild.xml file:</fo:block>

deployment/jbossbuild.xml
<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">

&lt;?xml version="1.0"?&gt;

&lt;!--[snip: license and header comments ]--&gt;

&lt;project name="project"
         default="build"
         basedir="."
&gt;
   &lt;import file="../tools/etc/jbossbuild/tasks.xml"/&gt;
   &lt;import file="component-info.xml"/&gt;

   &lt;componentdef component="deployment" description="JBoss Deployment"&gt;
      &lt;source id="main"/&gt;
   &lt;/componentdef&gt;

   &lt;generate generate="deployment"/&gt;
&lt;/project&gt;


</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">At the top, we see the root project element, which is required
for all Ant build files.  More interestingly, we see that two files
are imported.  The tasks.xml is from jbossbuild.  This file defines
the custom Ant tasks (like componentinfo) and ultimately drives the
dynamic creation of Ant targets based on our component definition.
The other file is the component-info.xml file we created above. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The second thing we see is the source element.  This says that we
have a source directory named "main".  jbossbuild requires that you
put all of your source under the "src" directory, so this resolves to
"deployment/src/main".</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Finally, we see the generate element.  This basically a clue to
jbossbuild to tell it we are done defining our component and that it
should generate the targets.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Let's see what we've got now:</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">

bash-2.05b$ ant -f jbossbuild.xml -projecthelp
Buildfile: jbossbuild.xml

Main targets:

 all                Build All
 api                Javadoc
 build              Build
 build.main         Build for the source src/main
 clean              Clean
 commit             Commit
 doc                Documentation
 rebuild            Synchronize then build
 rebuildall         Synchronize then build all
 runtest            Run tests
 synchronize        Synchronize
 synchronize.after  After synchronization processing
 test               Build and run the tests
Default target: build

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Again, we see that jbossbuild has automatically generated a
basic set of targets for us.  Additionally, we see that a specific
target has been generated for our main source.  As we add artifacts
and sources to our component definition, jbossbuild will define
specific targets for these as well.  Let's take a look at how this
target is implemented:</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">

bash-2.05b$ ant -f jbossbuild.xml show -Dshow=build.main
Buildfile: jbossbuild.xml

show:
&lt;!-- Build for the source src/main --&gt;
&lt;target name="build.main"&gt;

&lt;mkdir dir="C:\projects\newbuild-jboss\deployment\output\classes\main"/&gt;

&lt;depend destdir="C:\projects\newbuild-jboss\deployment\output\classes\main" srcdir="src/main"&gt;
  &lt;classpath&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\deployment\output\classes\main"/&gt;
  &lt;/classpath&gt;
&lt;/depend&gt;

&lt;javac destdir="C:\projects\newbuild-jboss\deployment\output\classes\main" deprecation="true" srcdir="src/main" debug="true" excludes="${javac.excludes}"&gt;
  &lt;classpath&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\deployment\output\classes\main"/&gt;
  &lt;/classpath&gt;
  &lt;src path="src/main"/&gt;
&lt;/javac&gt;

&lt;/target&gt;


</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Based on this one &lt;source id="main"&gt; element all of the above is
generated by jbossbuild.  However, if we were to call this target now,
it would fail because of unresolved imports.  To fix this, we need to
define the buildpath for the main source.  The easiest way to do this
is to find the library.classpath and dependentmodule.classpath in the
deployment/build.xml:</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">

    &lt;!-- The combined library classpath --&gt;
    &lt;path id="library.classpath"&gt;
      &lt;path refid="dom4j.dom4j.classpath"/&gt;
    &lt;/path&gt;

    &lt;!-- The combined dependant module classpath --&gt;
    &lt;path id="dependentmodule.classpath"&gt;
      &lt;path refid="jboss.common.classpath"/&gt;
      &lt;path refid="jboss.j2ee.classpath"/&gt;
      &lt;path refid="jboss.j2se.classpath"/&gt;
      &lt;path refid="jboss.system.classpath"/&gt;
    &lt;/path&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Based on this we can determine the buildpath for the main source:</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">

      &lt;source id="main"&gt;
         &lt;include component="dom4j-dom4j"/&gt;
         &lt;include component="common"/&gt;
         &lt;include component="j2ee"/&gt;
         &lt;include component="j2se"/&gt;
         &lt;include component="system"/&gt;
      &lt;/source&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Generally, you should read this as "The main source tree
includes these components as input."  Concretely, the exported jars
from these components are being included in the classpath of the call to javac:</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">

$ ant -f jbossbuild.xml show -Dshow=build.main
&lt;javac destdir="C:\projects\newbuild-jboss\deployment\output\classes\main" 
       deprecation="true" srcdir="src/main" debug="true" excludes="${javac.excludes}"&gt;
  &lt;classpath&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\j2ee\output\lib\jboss-saaj.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\common\output\lib\namespace.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\system\output\lib\jboss-system.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\common\output\lib\jboss-common.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\deployment\output\classes\main"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\j2se\output\lib\jboss-j2se.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\thirdparty\dom4j-dom4j\lib\dom4j.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\j2ee\output\lib\jboss-jaxrpc.jar"/&gt;
    &lt;pathelement location="C:\projects\newbuild-jboss\j2ee\output\lib\jboss-j2ee.jar"/&gt;
  &lt;/classpath&gt;
  &lt;src path="src/main"/&gt;
&lt;/javac&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">How are components resolved to jars?  jbossbuild searches for
the component-info.xml of the included component. First in the root of
the project (..) and second in the thirdparty directory
(../thirdparty).  The component-info.xml includes an export element
which specifies which artifacts should be resolved when the component
is included by another component.  It's probably not a bad analogy to
think of this mechanism as replacing buildmagic's modules.ent and
libraries.ent</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now we should compile the source to make sure we got it right.
We'll just use the build target because we are lazy and don't want to
type build.main (rats!).</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">

bash-2.05b$ ant -f jbossbuild.xml build
Buildfile: jbossbuild.xml

build.etc:
    [mkdir] Created dir: C:\projects\newbuild-jboss\deployment\output\etc
     [copy] Copying 1 file to C:\projects\newbuild-jboss\deployment\output\etc

build.main:
    [mkdir] Created dir: C:\projects\newbuild-jboss\deployment\output\classes\main
    [javac] Compiling 16 source files to C:\projects\newbuild-jboss\deployment\output\classes\main

build:

BUILD SUCCESSFUL
Total time: 7 seconds

</fo:block><fo:block id="d0e748"><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">5.4.2.1. Defining an Artifact</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">Great!  Notice that the output for the source (id=main) is being
placed in output/classes/main.  Now we are ready to add an artifact
definition.  Looking at the deployment/build.xml, we see there is one
artifact named jboss-deployment.jar.  First, let's declare the
artifact in our component-info.xml:</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">

   &lt;component id="deployment"
              module="jboss-deployment"
              version="5.0-SNAPSHOT"&gt;
      &lt;artifact id="jboss-deployment.jar"/&gt;
      &lt;export&gt;
         &lt;include input="jboss-deployment.jar"/&gt;
      &lt;/export&gt;
   &lt;/component&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Notice also that we export this jar.  When other components
import this one, this is the jar they will want on their
classpath.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now, we need to create an artifactdef for this new artifact.  The
artifacdef defines how the artifact is composed of other inputs:</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">

   ...
   &lt;/source&gt;
   &lt;artifactdef artifact="jboss-deployment.jar"&gt;
      &lt;include input="main"&gt;
        &lt;include pattern="org/jboss/deployment/**"/&gt;
      &lt;/include&gt;
   &lt;/artifactdef&gt;
&lt;/componentdef&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This results in the following target being generated:</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">

bash-2.05b$ ant -f jbossbuild.xml show -Dshow=build.jboss-deployment.jar
Buildfile: jbossbuild.xml

show:
&lt;!-- Build for the artifact jboss-deployment.jar --&gt;
&lt;target name="build.jboss-deployment.jar"&gt;

&lt;mkdir dir="C:\projects\newbuild-jboss\deployment\output\lib"/&gt;

&lt;jar destfile="C:\projects\newbuild-jboss\deployment\output\lib\jboss-deployment.jar"&gt;
  &lt;fileset dir="C:\projects\newbuild-jboss\deployment\output\classes\main"&gt;
    &lt;include name="org/jboss/deployment/**"/&gt;
  &lt;/fileset&gt;
&lt;/jar&gt;

&lt;/target&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Notice that the &lt;includes input="main"/&gt; is resolved to
output/classes/main.</fo:block></fo:block></fo:block><fo:block id="d0e769"><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.4.3. Placing an Artifact in the Release</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">5.4.3. Placing an Artifact in the Release</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">Now that we have completed the artifact, we need to define where
it should be placed in the overall release structure.  This
information, as you will recall, is stored in the toplevel build
(jbossas/jbossbuild.xml).  We define the location in the release using
the release tag:</fo:block>

jbossas/jbossbuild.xml:
<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">

      &lt;component id="deployment"
                 module="jboss-deployment"
                 version="5.0-SNAPSHOT"&gt;
         &lt;artifact id="jboss-deployment.jar" release="client"/&gt;
      &lt;/component&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This will place the artifact in the client directory of the release:</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">

bash-2.05b$ ant show -Dshow=release.jboss-deployment.jar
Buildfile: build.xml

show:
&lt;target name="release.jboss-deployment.jar"&gt;

&lt;mkdir dir="C:\projects\newbuild-jboss\jbossas\output\jbossas-5.0.0alpha\client"/&gt;
&lt;copy todir="C:\projects\newbuild-jboss\jbossas\output\jbossas-5.0.0alpha\client"&gt;
  &lt;fileset file="C:\projects\newbuild-jboss\deployment\output\lib\jboss-deployment.jar"/&gt;
&lt;/copy&gt;

&lt;/target&gt;

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now, you should be able perform a build of the application server:</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">

$ ant build
...

</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Congratulations, you've successfully added a new component to jboss AS.</fo:block></fo:block></fo:block><fo:block id="d0e787"><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.5. How to Add a Component to the Repository</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.5. How to Add a Component to the Repository</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 the steps necessary to add a component 
   to the build repository, currently at http://cruisecontrol.jboss.com/repository</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="d0e792" 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="d0e793"><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>First, you will want to checkout the repository locally.</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">
cvs -d:ext:user@cvs.forge.jboss.com/cvsroot/jboss co repository.jboss.com
      </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="d0e798"><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>You need to decide on a component name.  It is best to use something 
      like organization-component so others can quickly tell what the name refers to.   
      The exception is jboss components which are not prefixed with "jboss".</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Underneath the directory named after the component is the version number, 
      which contains the component-info.xml.  The lib directory below this will hold the jars.</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">
repository.jboss.com
   + apache-log4j
     + 1.2.8
       + component-info.xml
       + lib
         + log4j.jar
      </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="d0e805"><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>In addition to adding the jars, you also need to create a
      component-info.xml.  This file allows other components to
      reference your jars.  We want to make sure that the
      component-info.xml reflects the version we indicated in the
      directory structure above.
         <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">
&lt;project name="apache-log4j-component-info"&gt;
   &lt;!-- ============================================================ --&gt;
   &lt;!-- Apache Log4j                                                 --&gt;
   &lt;!-- ============================================================ --&gt;

   &lt;component id="apache-log4j"
              licenseType="apache-2.0"
              version="1.2.8"
              projectHome="http://logging.apache.org/"&gt;
      &lt;artifact id="log4j.jar"/&gt;
      &lt;artifact id="snmpTrapAppender.jar"/&gt;
      &lt;export&gt;
         &lt;include input="log4j.jar"/&gt;
      &lt;/export&gt;
   &lt;/component&gt;

&lt;/project&gt;
      </fo: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="d0e811"><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>You can commit the new version to the repository using
   cvs commands.  There is (will be) a scheduled process which updates
   the online repository from cvs every 5 minutes.  If this fails,
   please contact qa@jboss.com</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="d0e814"><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:block>Once the component is available in the online build
   repository, you may configure toplevel (e.g., jbossas/jbossbuild.xml)
   build to include it:
      <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">
   &lt;component id="apache-log4j"
              version="1.2.8"
   &gt;
      &lt;artifact id="log4j.jar"/&gt;
      &lt;artifact id="snmpTrapAppender.jar"/&gt;
   &lt;/component&gt;

      </fo:block>
   </fo:block></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>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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">6</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="d0e828"><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. 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">6.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="d0e843"><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. 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">6.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="d0e884"><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. 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">6.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="d0e912" 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="d0e913"><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="d0e915"><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="d0e917"><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="d0e919"><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="d0e921"><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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">7</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
  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.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="d0e939"><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. 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">7.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="d0e952"><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.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">7.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="d0e966"><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. 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">7.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="d0e969" 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="d0e970"><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="d0e973"><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="d0e976"><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="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. 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">7.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="d0e982" 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="d0e983"><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="d0e986"><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="d0e989"><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="d0e992"><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="d0e995"><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. 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, Home of Professional Open Source
  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.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.3 $&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="d0e1002"><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. 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, Home of Professional Open Source
  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.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.3 $&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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">8</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="d0e1014"><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. 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">8.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="d0e1025"><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. 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">8.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="d0e1028" 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="d0e1029"><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="d0e1031"><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="d0e1033"><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="d0e1035"><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="d0e1037"><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="d0e1039"><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="d0e1050"><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. 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">8.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="d0e1061"><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. 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">8.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="d0e1072"><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. 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="d0e1080"><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.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">8.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="d0e1088"><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.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="d0e1095"><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.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">8.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="d0e1100" 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="d0e1101"><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="d0e1104"><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="d0e1107"><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="d0e1110"><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="d0e1113"><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="d0e1129"><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.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="d0e1162"><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.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="d0e1183"><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.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="d0e1193"><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.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="d0e1202"><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.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">8.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="d0e1207"><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. 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="d0e1290"><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.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">8.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="d0e1295"><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.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="d0e1310"><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.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">8.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="d0e1333"><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="d0e1365"><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.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">8.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="d0e1421"><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.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="d0e1464"><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.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">8.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="d0e1486"><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.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, Home of Professional Open Source

  * Copyright 2005, JBoss Inc., and individual contributors as indicated

  * by the @authors tag. See the copyright.txt in the distribution for a

  * full listing of individual contributors.

  *

  * This is free software; you can redistribute it and/or modify it

  * under the terms of the GNU Lesser General Public License as

  * published by the Free Software Foundation; either version 2.1 of

  * the License, or (at your option) any later version.

  *

  * This software is distributed in the hope that it will be useful,

  * but WITHOUT ANY WARRANTY; without even the implied warranty of

  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

  * Lesser General Public License for more details.

  *

  * You should have received a copy of the GNU Lesser General Public

  * License along with this software; if not, write to the Free

  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA

  * 02110-1301 USA, or see the FSF site: http://www.fsf.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="d0e1506"><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. 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">8.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="d0e1536" 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="d0e1537"><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="d0e1544"><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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">9</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="d0e1585"><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. 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">9.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="d0e1590"><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.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">9.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="d0e1605"><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.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">9.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="d0e1610"><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="d0e1624"><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.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">9.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="testsuite-clustering-tests-configuration"><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.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">9.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 space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You can also use the udpGroup property to prevent your clustering tests
from interfering with others on the same network using the udpGroup property. This can 
be passed at the command line or in the local.properties file.  This will be passed to 
the servers under test using the -u option:</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">
./build.sh -DudpGroup=128.1.2.3 tests
...
[server:start] java org.jboss.Main -c minimal -b localhost -u 128.1.2.3 

</fo:block></fo:block><fo:block id="d0e1659"><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.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">9.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="d0e1670"><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. 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">9.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="d0e1678"><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.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">9.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="d0e1683"><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 9.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="d0e1737"><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.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">9.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="d0e1748"><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 9.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="d0e1795"><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. 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">9.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="d0e1838"><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.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">9.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="d0e1860" 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="d0e1861"><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="d0e1863"><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="d0e1865"><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="d0e1867"><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="d0e1869"><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="d0e1871"><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="d0e1873"><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="d0e1875"><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="d0e1877"><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="d0e1879"><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="d0e1881"><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="d0e1883"><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="d0e1889" 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="d0e1890"><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="d0e1892"><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="d0e1894"><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 9.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.3 2005/12/01 22:39:51 rcampbell 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="d0e1901"><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.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">9.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="d0e1915" 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="d0e1916"><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="d0e1920"><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="d0e1924"><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="d0e1957"><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.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">9.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="d0e1983"><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.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">9.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:block id="testsuite-exclude-bad-tests"><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.7. Excluding Bad 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">9.7. Excluding Bad 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">If a test cannot be fixed for some reason, it should be added
  to the bad.test excludes. This is maintained near the top of the
  testsuite/build.xml.  The patternset will be used to exclude tests
  all calls to JUnit within the testsuite. </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">
  &lt;!-- Tests that are currently broken --&gt;
  &lt;patternset id="badtest.excludes"&gt;
    &lt;exclude name="org/jboss/test/aop/test/RemotingUnitTestCase"/&gt;
    &lt;!-- The media ejb is not active --&gt;
    &lt;exclude name="org/jboss/test/media/**"/&gt;
    &lt;!-- Needs apache ? --&gt;
    &lt;exclude name="org/jboss/test/cluster/httpsessionreplication/**"/&gt;
    &lt;exclude name="org/jboss/test/cache/test/local/ConcurrentTransactionalUnitTestCase.class"/&gt;
  &lt;/patternset&gt;</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 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 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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">10</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Support and Patch Management</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block id="support-patch-overview"><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">10.1. An overview of the Support Patch 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">10.1. An overview of the Support Patch Process</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block>

     The support patch process is very simple. Whenever a JBoss developer is working on a support case which requires a patch, they should create a Support Patch in JIRA. The following steps should be followed. 

    <fo:block id="d0e2022"><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">10.1.1. Development Phase</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">10.1.1. Development Phase</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="d0e2025" 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="d0e2026"><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>Create an issue in jira.jboss.com with a type "Support
        Patch" under the appropriate project.</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="d0e2028"><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>Be sure to make the issue either "Customers Only" or 
                 "JBoss Internal"</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="d0e2030"><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>Click the "Start Progress" link to enter the CVS branch
          information.</fo:block><fo:external-graphic src="images/jira-sp/start-progress-cvs-branch.png" width="auto" height="auto" content-width="auto" content-height="auto"/><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Enter the CVS Branch for the patch. Using that JIRA ID and the
          tag for the release being patched, create a branch in CVS for the
          patch using the format ReleaseTag_JiraID.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For instance, if the patch issue ID is JBAS-1234 for JBoss
          4.0.3, the patch's branch should be JBoss_4_0_3_JBAS-1234.</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">
     cvs rtag -r JBoss_4_0_3 -b JBoss_4_0_3_JBAS-1234 jboss-4.0.x
     cvs co -r JBoss_4_0_3_JBAS-1234 jboss-4.0.x
     </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the project being patched is not in JBoss hosted CVS,
          attach the source diff to this case.</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="d0e2043"><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>If the issue being resolved does not have a test case,
        it should be added to the testsuite.</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="d0e2045"><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>When committing the patch to the branch, be sure to include
        the JIRA ID of the patch in the commit comment.</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="d0e2047"><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:block>Build the patched jars from the above branch and attach them
          to the JIRA issue.</fo:block><fo:external-graphic src="images/jira-sp/attach-jar.png" width="auto" height="auto" content-width="auto" content-height="auto"/></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="d0e2052"><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>Click "Hand Over to QA". In the "Patch Instructions" field
        enter installation instructions on how to apply the patch to an
        existing installation. 

        <fo:external-graphic src="images/jira-sp/hand-over-to-qa.png" width="auto" height="auto" content-width="auto" content-height="auto"/><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Use the <fo:basic-link internal-destination="patch-howto-template">Support
        Patch Template</fo:basic-link> as a basis for these
        instructions.</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="d0e2061"><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>Mark the issue as "Pass to QA".</fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e2063"><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">10.1.2. QA Phase</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">10.1.2. QA Phase</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="d0e2067" 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="d0e2068"><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>QA will run the testsuite to verify that the patch
        produces no regressions. If the tests fail, QA will mark the
        issue as "QA Tests Failed" and it will be reassigned to the
        developer.</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="d0e2070"><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>See <fo:basic-link internal-destination="howto-qa-support-patch">How To QA
        a Support Patch.</fo:basic-link>.</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="d0e2075"><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>QA will mark the issue as "QA Tests Passed" if the tests
        passed.</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="d0e2077"><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>If tests pass, attach JARS to Support Portal case.
        Download jars and verify that MD5 sums match
        originals. </fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e2079"><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">10.1.3. JBN Phase</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">10.1.3. JBN Phase</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="d0e2082" 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="d0e2083"><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>The patch will be deployed by the JBossNetwork team.
      This should include linking the issue to the JBN patch.</fo:block><fo:external-graphic src="images/jira-sp/upload-to-patch-repo.png" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="patch-howto-template"><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">10.2. Support Patch Instructions Template</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">10.2. Support Patch Instructions Template</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">Below is the skeleton of the directions that should be entered in
    the "Patch Instructions" field in JIRA.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><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">
PATCH NAME: 
        JBAS-XXXX
PRODUCT NAME:
        JBoss Application Server
VERSION:
        4.0.2        
SHORT DESCRIPTION: 
        [What problem this patch fixes.]
        ex: "A NullPointerException is no longer thrown when the password field is left blank."
LONG DESCRIPTION: 
        [Detailed explanation of the problem.]
        ex: "Prior to this fix, blah happened. With this fix blah will happen instead.  This is because blah blah blah.
MANUAL INSTALL INSTRUCTIONS:
        [How a user should manually install this patch.]
        ex: "Rename %JBOSS_HOME%/lib/someJar.jar to "someJar.replacedBy.JBAS-xxxx.jar.old"
        Copy the new someJar.jar to %JBOSS_HOME%/lib/"
COMPATIBILITY: 
        [known usages and known combinations that don't work]
        ex: "portal 2.x in a given jems bundle does not work with this change"
DEPENDENCIES:
        [list any patches this patch is dependent on]
        ex: 4.0.2-SP2
SUPERSEDES:
        [list any patches this patch supersedes]
        ex: JBAS-1450
SUPERSEDED BY:
        [list any patches this patch is superseded by]
        ex: 4.0.2-SP3
CREATOR:
        [author of this patch]
DATE:
        [date these instructions were written]
   </fo:block></fo:block></fo:block><fo:block id="howto-qa-support-patch"><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">10.3. How To QA a Support Patch</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">10.3. How To QA a Support Patch</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">
        <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">
# Howto test a patch in the QA lab

# create a directory which corresponds to the JIRA id for the patch
mkdir JBAS-1234
cd JBAS-1234

#set your JAVA_HOME correctly 
#if jboss 3.x, use jdk 1.3
#export JAVA_HOME=/opt/jdk1.3.1_13/

#if jboss 4.x use jdk 1.4
export JAVA_HOME=/opt/j2sdk1.4.2_09/

#Make sure you are testing on a 32-bit box

# get the source distribution of the *targetted* version of jboss
tar xvzf /opt/src/jboss-4.0.2-src.tar.gz

# build Jboss &amp; save the original output
cd jboss-4.0.2-src/build; sh build.sh
cp -r output output-orig
cd ../..

# download the patched binaries into a binaries directory
mkdir binaries; cd binaries; #download them locally &amp; upload via scp (if in qa lab)

#TODO: look at using wget to retrieve patches

# capture the md5 of each jar and add it as comment to jira
md5sum *.jar

# create a mirror of the install distro using the patched jars
mkdir -p jboss-4.0.2/server/all/lib
cp jboss.jar jboss-4.0.2/server/all/lib

# copy the jars to the output, verifying each jar copies correctly
cp -ivr jboss-4.0.2 ../jboss-4.0.2-src/build/output

# save the patched version for later (to switch back &amp; forth)
cd ../jboss-4.0.2-src/build
cp -r output output-patched

# run the testsuite against the patched version (let node0 default to localhost)
cd ../testsuite
sh build.sh -Dnode1=$MYTESTIP_1 tests

# tests will take 1-2 hours, to save time, verify pass rate every 15 min
# if you see several failures, make sure no one else is on
who
ps --columns 1000 -ef | grep run.jar

# once tests complete, save the text report and take a look at it
cp output/reports/text/TESTS-Testsuite.txt ../../TESTS-patched.txt

# verify any failures also fail on the unpatched version
# upon any failure contact QA Lead for help
cd ../build;
mv output output-patched
cp -r output-orig output

# run the appserver using the necessary mode (may not be all!)
cd output/jboss-4.0.2/
./bin/run.sh -c all

#different shell
cd jboss-4.0.2-src/testsuite
sh build.sh -Dtest=org.jboss.tests.the.FailingTest one-test

# if failure only occurs on patched version, reject the patch
# Attach necessary information to JIRA issue
# ie, testuite/output/reports/TESTS-org.jboss.test.the.FailingTest.txt

#  When failing the patch notify developer that patched client jars 
#  were note used, ie, add this as a comment:
#  NOTE: Patched client jars were not used to validate compatibility.

# Upon failure tar up the issue directory and copy to /home/issues
cd $ISSUE_HOME/..
tar cvzf JIRA-1234.tar.gz JIRA-1234
cp JIRA-1234.tar.gz /home/issues

#note path to tar.gz on JIRA issue
        </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>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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">11</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="d0e2113" 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="d0e2114"><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="d0e2118" 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="d0e2119"><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="d0e2121"><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="d0e2123"><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="d0e2125"><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="d0e2127"><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="d0e2129"><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="d0e2131"><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="d0e2133"><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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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">12</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="d0e2138"><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">12.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">12.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="d0e2143" 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="d0e2144"><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="d0e2149"><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="d0e2154"><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="d0e2159"><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="d0e2169"><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">12.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">12.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="d0e2174"><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">12.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">12.2.1. Responsibilities</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e2177"><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">12.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="d0e2182" 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="d0e2183"><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="d0e2185"><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="d0e2187"><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="d0e2189"><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="d0e2191"><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="d0e2195"><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">12.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="d0e2200" 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="d0e2201"><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="d0e2203"><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="d0e2205"><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="d0e2207"><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="d0e2209"><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="d0e2211"><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="d0e2213"><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="d0e2217"><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">12.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">12.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="d0e2222"><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">12.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">12.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="d0e2227"><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 12.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="d0e2231" 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="d0e2232"><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="d0e2234"><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="d0e2236"><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 12.2. Find all tasks that affect docs</fo:block></fo:block></fo:block><fo:block id="d0e2240"><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">12.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">12.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="d0e2247"><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">12.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">12.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: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 QA Lab 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 QA Lab 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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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="qalab"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">13</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">JBoss QA Lab Guide</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 chapter provides JBoss developers with a guide to the QA lab.  It
covers usage guidelines as well as setup documentation</fo:block><fo:block id="d0e2279"><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">13.1. Quick Start Guide</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">13.1. Quick Start Guide</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">
Use ssh to log into dev02.pub.qa.atl.jboss.com. All of the servers in
the Q/A lab have the same public keys and accounts as cvs.jboss.com.
If you can't connect, contact it-ops@jboss.com. Dev02 is available for
ad-hoc testing by developers and support engineers. No scheduling is
required for this box.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To avoid port conflicts with others, bind listeners to your assigned address. Currently, each
account has 4 IP addresses available. These are available as environment variables:
$MYTESTIP_1,$MYTESTIP_2, $MYTESTIP_3, $MYTESIP_4. For instance:

  <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">
./run.sh -b $MYTESTIP_1 -c default
  </fo:inline></fo:block>

You will find assorted tools and JVM's under /opt.  If you can't find something you need, please raise the issue on the JBIT project in JIRA.
  </fo:block></fo:block><fo:block id="d0e2290"><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">13.2. Lab Setup</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">13.2. Lab Setup</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e2293"><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">13.2.1. Topology</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">13.2.1. Topology</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 node has a public IP address for services such as SSH and HTTP,
in addition to 256 private IP addresses.  The local network is Gigabit
Ethernet, with connectivity to the public Internet via a DS3.
    </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
To prevent port conflicts, each listener/server process must be bound
to a specific private IP address. These IP addresses are delineated
per node and per user in the /opt/etc/assigned-ips file, available on
each machine. Currently, each user is assigned 4 IP addresses per
node.  These are automatically set as the environment variables
$MYTESTIP_1 $MYTESTIP_2, etc.  All ports for a given private IP address
may be accessed via SSH tunneling.
   </fo:block></fo:block><fo:block id="d0e2300"><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">13.2.2. File System</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">13.2.2. File System</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 /opt and /home directories on each machine are mapped to the
corresponding directories on dev01 via NFS. So your home directory is
the same on each machine.  The /opt directory holds common packages
needed across all nodes, preventing unecessary duplication.

Under /opt, you will find several useful packages such as:
   <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="d0e2305" 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="d0e2306"><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>Many jdks, including IBM, Sun &amp; JRockit</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="d0e2309"><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>JDBC drivers under /opt/jdbc-drivers</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="d0e2312"><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>Under /opt/src, several binary &amp; src distros of JBoss</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="d0e2315"><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>Several versions of Ant</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
  </fo:block></fo:block><fo:block id="d0e2319"><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">13.2.3. Databases</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">13.2.3. Databases</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 documents the available databases in the QA lab, how to
start, stop &amp; access them.  JDBC drivers are available under
/opt/jdbc-drivers.
   </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
For sudo acces to sybase &amp; oracle, see <fo:basic-link internal-destination="qalab-how-do-i-get-db-admin-access">"How do I get DB admin access?"</fo:basic-link>
   </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="d0e2329"><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 13.1. Available Databases</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">Database</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">Connection URL</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">Start/Stop</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">New User</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>Oracle 10.1.0.3</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>jdbc:oracle:thin:@dev01-priv:1521:qadb01</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><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">/etc/init.d/dbora start|stop</fo:inline></fo:block></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><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">$ sudo su - oracle
$ export ORACLE_SID=qadb01
$ sqlplus "/ as sysdba "
CREATE USER your_username_here 
IDENTIFIED BY your_password_here  
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;

GRANT DBA to your_username_here;</fo:inline></fo:block></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>MySQL 4.1.10a</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>jdbc:mysql://dev01-priv/your_database_here</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><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">/etc/init.d/mysql.server start|stop</fo:inline></fo:block></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><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">$ /opt/mysql/bin/mysql -u qa -h qadb01 -p
Enter password: #request from JBIT in JIRA
GRANT ALL PRIVILEGES ON your_db_here.* 
TO 'your_username_here'@'%' 
IDENTIFIED BY 'your_password_here';
flush privileges;
create database your_database_here;
</fo:inline></fo:block></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>Sybase ASE 12.5.2</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>jdbc:sybase:Tds:dev01-priv:4100</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><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">sudo su - sybase
startserver -f \
~/sybase/ASE-12_5/install/RUN_sybase01
#stop
sudo su - sybase
isql -Usa -P -Ssybase01
shutdown
go
</fo:inline></fo:block></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><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">$ sudo su - sybase
$ isql -Usa -P -Ssybase01
sp_addlogin "yourusernamehere", "yourpasswordhere"
go
create database yourdbhere
go
use yourdbhere
go
sp_changedbowner yourusernamehere
go
</fo:inline></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block><fo:block id="d0e2383"><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">13.2.4. Servers</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">13.2.4. Servers</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 lists the available servers and their configurations.  
     We can move between Windows/SLES/RHEL very quickly.  
     Please ask if you need a different OS.
   </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="d0e2388"><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 13.2. Available Servers</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">Host</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">Purpose</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">OS</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">CPU</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">Memory</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>dev01.pub.qa.atl.jboss.com</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>Database/NFS server</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>RHEL 3/2.4 Kernel</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>2 x 3.06 GHz P4 Xeon</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>4GB</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>dev02.pub.qa.atl.jboss.com</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>General usage by developers</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>RHEL 3/2.4 Kernel</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>2 x 3.06 GHz P4 Xeon</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>2GB</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>dev03.pub.qa.atl.jboss.com</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>General usage by developers</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>RHEL 3/2.4 Kernel</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>2 x 3.06 GHz P4 Xeon</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>2GB</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>dev04.pub.qa.atl.jboss.com</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>General usage by developers</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>SLES 9/2.6 Kernel</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>2 x 3.06 GHz P4 Xeon</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>2GB</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>dev05.pub.qa.atl.jboss.com</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>Cruisecontrol - no general access</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>RHEL 3/2.4 Kernel</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>2 x 3.06 GHz P4 Xeon</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>2GB</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>dev07.pub.qa.atl.jboss.com</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>General usage by developers</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>RHEL 4/2.6 Kernel/64 bit</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>2 x 1.4 GHz IA-64 Itanium 2</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>2GB</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>dev08.pub.qa.atl.jboss.com</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>General usage by developers</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>RHEL 4/2.6 Kernel/64 bit</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>2 x 1.4 GHz IA-64 Itanium 2</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>2GB</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>dev12.pub.qa.atl.jboss.com</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>General usage by developers</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>Solaris 8</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>2 x 1.2HGz Sun V210</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>4GB</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>dev13.pub.qa.atl.jboss.com</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>General usage by developers</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>Solaris ?</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>2 x 1.8GHz Sun V20z</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> </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>dev14.pub.qa.atl.jboss.com</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>General use; available for dedicated use</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>RHEL 4/2.6 Kernel/64 bit</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>1 x 1.5 GHz IA-64 Itanium 2</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>4 GB</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>dev15.pub.qa.atl.jboss.com</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>General use; available for dedicated use</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>RHEL 4/2.6 Kernel/64 bit</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>1 x 1.5 GHz IA-64 Itanium 2</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>4 GB</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>dev16.pub.qa.atl.jboss.com</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>SPECJ</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>RHEL 4/2.6 Kernel/64 bit</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>2 x 3.6 GHz Xeon EM64T</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>4 GB</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>dev17.pub.qa.atl.jboss.com</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>SPECJ</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>RHEL 4/2.6 Kernel/64 bit</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>2 x 3.6 GHz Xeon EM64T</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>4 GB</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>dev18.pub.qa.atl.jboss.com</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>General use; available for dedicated use</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>RHEL 4/2.6 Kernel/64 bit</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>4 x 1.5 GHz IA-64 Itanium 2</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>4 GB</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>dev19.pub.qa.atl.jboss.com</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>General use; available for dedicated use</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>RHEL 4/2.6 Kernel/64 bit</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>4 x 1.5 GHz IA-64 Itanium 2</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>4 GB</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e2569"><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">13.3. QA Lab FAQ</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">13.3. QA Lab FAQ</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block/></fo:block><fo:block id="d0e2572"><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="15.84pt">13.3.1. General</fo:block></fo:block><fo:block start-indent="0pc"><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" provisional-label-separation="0.2em" provisional-distance-between-starts="2.5em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2575"><fo:list-item-label id="d0e2576" end-indent="label-end()"><fo:block>13.3.13.3.1.1.</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">How should I run the testsuite in the QA Lab?</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 id="d0e2579" end-indent="label-end()"><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">./build.sh tests -Dnode0=$MYTESTIP_1 -Dnode1=$MYTESTIP_2</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="d0e2582"><fo:list-item-label id="d0e2583" end-indent="label-end()"><fo:block>13.3.13.3.1.2.</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">I'm getting port conflicts, how do I fix this?</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 id="d0e2586" end-indent="label-end()"><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"><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">sudo /usr/sbin/lsof -i -P | grep 1099</fo:block>
                 This should display who has JBoss instances running.
                 If they have not bound to their private IP address, it
                 will conflict even if you are doing so.</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="qalab-how-do-i-get-db-admin-access"><fo:list-item-label id="d0e2592" end-indent="label-end()"><fo:block>13.3.13.3.1.3.</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">How do I get DB admin access?</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 id="d0e2595" end-indent="label-end()"><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">On dev01, check to see if you are 
            in the oracle_admin group:
        <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">$ groups</fo:block>
        If you don't see oracle_admin listed, open a JIRA
        issue in the JBIT project requesting access to this group.
        </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="qalab-how-do-i-add-space-to-sybase"><fo:list-item-label id="d0e2602" end-indent="label-end()"><fo:block>13.3.13.3.1.4.</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">How do I add disk space for Sybase?</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 id="d0e2605" end-indent="label-end()"><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">Get into the isql prompt as above, and
        <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">disk resize name="master", size="200M"
go</fo:block>
        </fo:block></fo:list-item-body></fo:list-item></fo:list-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="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>Serialization</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>Serialization</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, Clebert Suconic</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, Clebert Suconic</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, Clebert Suconic</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="serialization"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block text-align="right" font-size="72pt" font-weight="bold">14</fo:block><fo:block text-align="right" font-weight="bold" font-size="19.8pt">Serialization</fo:block></fo:block><fo:block/></fo:block></fo:block><fo:block id="performance-externalization"><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">14.1. Performance Consideration - Use Externalization</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">14.1. Performance Consideration - Use Externalization</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 best way to achieve performance on Serialization, is to use
    Externalization without using writeObject.</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="d0e2619"><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 14.1. Externalization Code</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" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" text-align="start" linefeed-treatment="preserve">public class FirstClass implements Externalizable
{
        SecondClass secondClass;
        public void writeExternal(ObjectOutputStream out)
        {
                secondClass.writeExternal(out);
        }
        public void readExternal(ObjectInputStream inp)
        {
                secondClass = new SecondClass();
                secondClass.readExternal(inp);
        }
}

class SecondClass implements Externalizable
{
        String str;
        public void writeExternal(ObjectOutputStream out) { out.writeUTF(str); }
        public void readExternal(ObjectInputStream inp) { str = inp.readUTF(); }
}</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"/><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is because writeObject will call a heavy discovery meta data
    for reflection and serialization's constructors. Dealing directly with the
    life cycle of objects on externalization routines (calling new) will save
    you from execution this meta code.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Of course there are situations where you have to use
    writeObject/readObject, specially if the written object was already
    described as part of other object (for solving circular references), but
    most of times when doing writeExternal routines you can guarantee the life
    cycle of objects.</fo:block></fo:block><fo:block id="d0e2629"><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">14.2. Version Compatibility</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">14.2. Version 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">A rule of thumbs is always define serialVersionUID.</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="d0e2634"><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 14.2. serialVersionUID</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" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" text-align="start" linefeed-treatment="preserve">private static final long serialVersionUID = 39437495895819393L;</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If you don't specify the uniqueID for the object, you can't
    guarantee version compatibility as minor changes could end up in different
    serialVersionUID, as they would be calculated according to rules
    specified on this URL:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/class.html#4100</fo:block><fo:block id="d0e2643"><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">14.2.1. In Externalizable Objects</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">14.2.1. In Externalizable Objects</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 an externalizable class, writeExternal and readExternal will
      have to control its version compatibility.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ObjectInputStream encapsulates Streaming in such way that if you try
      to read more fields from a readExternal method, you would get an
      EOFException. You could use the exception to determine if the end of a streaming was reached, like in the example</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="d0e2650"><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 14.3. writeExternal/readExternal among different versions</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" background-color="#F0F0F0" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" text-align="start" linefeed-treatment="preserve">public void writeExternal(ObjectOutputStream out)
{
   out.writeUTF("FirstString");
   // code added in a newer version
   out.writeUTF("SecondString");
}

public void readExternal(ObjectInputStream inp)
{
   String str1 = inp.readUTF();
   try
   {
      String str2 = inp.readUTF();
   }
   catch (EOFException e)
   {
   }
}</fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On the example above if an older version was used to write the
      object an EOFException would happen and it would be ignored. This would
      guarantee version compatibility between versions.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Any change made to an Externalizable class will be compatible as
      long as its read and writeExternal methods are compliant.</fo:block></fo:block><fo:block id="d0e2659"><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">14.2.2. Regular Serialization</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">14.2.2. Regular Serialization</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">Serialization's specification describe lots of scenarios on
      exchanging information between different class versions:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Basically there is one simple and basic rules that will summarize
      the list above</fo:block><fo: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="d0e2669"><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" provisional-distance-between-starts="2em" provisional-label-separation="0.2em"><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 id="d0e2670">•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Add fields, don't delete them.</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">You need to take extra care when adding fields if the same Class
      is used back and forth different versions. For example a Class that is
      for communications on both sides.</fo:block></fo:block><fo:block id="d0e2675"><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">14.2.3. Compatible and Incompatible 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">14.2.3. Compatible and Incompatible 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 following URL lists all the possible situations where a class
      will and won't be compatible.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence></fo:root>