blob: 31fb71516f3bef9d03e83f39a0c2c714c9ccac69 [file] [log] [blame]
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 10">
<meta name=Originator content="Microsoft Word 10">
<link rel=File-List href="FlexibleProjectConcepts_files/filelist.xml">
<link rel=Edit-Time-Data href="FlexibleProjectConcepts_files/editdata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title>Problems that are obviously us:</title>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="City"/>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Michael D. Elder</o:Author>
<o:LastAuthor>cbridgha</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>6</o:TotalTime>
<o:LastPrinted>2004-11-11T16:27:00Z</o:LastPrinted>
<o:Created>2004-11-11T18:05:00Z</o:Created>
<o:LastSaved>2004-11-11T18:05:00Z</o:LastSaved>
<o:Pages>1</o:Pages>
<o:Words>1502</o:Words>
<o:Characters>8562</o:Characters>
<o:Company>IBM</o:Company>
<o:Lines>71</o:Lines>
<o:Paragraphs>20</o:Paragraphs>
<o:CharactersWithSpaces>10044</o:CharactersWithSpaces>
<o:Version>10.4219</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if !mso]><object
classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
<style>
st1\:*{behavior:url(#ieooui) }
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
h3
{mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
mso-pagination:widow-orphan;
mso-outline-level:3;
font-size:13.5pt;
font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;
text-underline:single;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:132529151;
mso-list-type:hybrid;
mso-list-template-ids:1093442910 67698709 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-number-format:alpha-upper;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:1.5in;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1
{mso-list-id:288974159;
mso-list-type:hybrid;
mso-list-template-ids:1046108864 1111785440 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:.75in;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@list l2
{mso-list-id:391659255;
mso-list-type:hybrid;
mso-list-template-ids:-1881621166 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l3
{mso-list-id:859508517;
mso-list-type:hybrid;
mso-list-template-ids:2094045304 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
margin-left:1.5in;
text-indent:-.25in;
font-family:Symbol;}
@list l4
{mso-list-id:1006594864;
mso-list-type:hybrid;
mso-list-template-ids:-794890384 668081380 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l4:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F06E;
mso-level-tab-stop:.75in;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;
font-family:Wingdings;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";}
@list l4:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.25in;
mso-level-number-position:left;
margin-left:1.25in;
text-indent:-.25in;
font-family:"Courier New";}
@list l5
{mso-list-id:1402829190;
mso-list-type:hybrid;
mso-list-template-ids:-1531251734 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l5:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
margin-left:1.0in;
text-indent:-.25in;
font-family:Symbol;}
@list l6
{mso-list-id:1457291202;
mso-list-type:hybrid;
mso-list-template-ids:-265669448 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l6:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
margin-left:1.5in;
text-indent:-.25in;
font-family:Symbol;}
@list l7
{mso-list-id:1838376975;
mso-list-type:hybrid;
mso-list-template-ids:-1460776930 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l7:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
margin-left:1.0in;
text-indent:-.25in;
font-family:Symbol;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
table.MsoTableGrid
{mso-style-name:"Table Grid";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
<div class=Section1>
<p class=MsoNormal>The J2EE Flexible Project Concepts Documentation</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>The goal of this document is to share some initial ideas
that will help shape the Eclipse Web Tools (WTP) J2EE project application model
and its implementation. We initially planned to pursue this effort as a formal
requirements gathering and documentation process. But once we began analyzing
the problem space it was clear that there is no common J2EE project model used
within the J2EE development community. Stated another way, all current J2EE
project models are ad hoc. At most, the J2EE application deployment model,
defined in the J2EE specification, is the only common reference structure and
it only specifies to the runtime archive form of valid J2EE applications. With
that as our starting point, we concluded that rather than attempt to draft a
conventional requirements document, it would be more beneficial to initiate a
discussion of ideas among the key WTP participants that can serve as the
catalyst for a J2EE application project requirements and subsequent
architecture and implementation.</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>The contents of this document are representative of the
future direction. However, some of this functionality described is
representative of our current state.</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'>There are several
use cases described in the Use Case Scenario Powerpoint Slides. Where relevant,
the relationship of the concepts described in this document and the scenario
slides are highlighted.</span><o:p></o:p></p>
<p class=MsoNormal style='margin-left:.25in'><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'>A <b
style='mso-bidi-font-weight:normal'>project</b> is a type of resource which
groups resources into buildable, reusable units</span> - Java <span lang=TR
style='mso-ansi-language:TR'>project resource</span>s are defined<span lang=TR
style='mso-ansi-language:TR'> in terms of Java<span style='mso-spacerun:yes'> 
</span>elements such as package fragments, types, methods and fields.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'>The scenario
slides highlight the following types of use cases:<o:p></o:p></span></p>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'><o:p>&nbsp;</o:p></span></p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal style='mso-list:l2 level1 lfo8;tab-stops:list .5in'><span
lang=TR style='mso-ansi-language:TR'>Simple Project (contains one module
and one Deploy Scheme)<o:p></o:p></span></li>
<li class=MsoNormal style='mso-list:l2 level1 lfo8;tab-stops:list .5in'><span
lang=TR style='mso-ansi-language:TR'>Simple Container Project (contains one
or more modules, possibly multiple Deploy Schemes)<o:p></o:p></span></li>
<li class=MsoNormal style='mso-list:l2 level1 lfo8;tab-stops:list .5in'><span
lang=TR style='mso-ansi-language:TR'>Application Project (application and
modules contained in the same<span style='mso-spacerun:yes'> 
</span>Simple Container project)<o:p></o:p></span></li>
<li class=MsoNormal style='mso-list:l2 level1 lfo8;tab-stops:list .5in'><span
lang=TR style='mso-ansi-language:TR'>Application Project Variation (application
in one Simple Container Project modules may be in other Simple Container
projects)<o:p></o:p></span></li>
<li class=MsoNormal style='mso-list:l2 level1 lfo8;tab-stops:list .5in'><span
lang=TR style='mso-ansi-language:TR'>Composed Modules (stay tuned (bum bum
bum))<o:p></o:p></span></li>
</ul>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal><span lang=TR style='mso-ansi-language:TR'>The J2EE module
definitions build on the use case concepts. As discussed in the use cases, a
module is a collection of files in a project. However, for the remainder of
this document, the term abstract module will refer to an intangible concept (to
be defined more explicitly later on). The abstract module concept represents
the abstraction of a physical module in terms that can be understood
programmatically. The specifics of how these projects<span
style='mso-spacerun:yes'>  </span>are constructed is not important to the
discussion of modules.<o:p></o:p></span></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>A <b style='mso-bidi-font-weight:normal'>resource</b> is a
abstraction which contains model elements. A <b style='mso-bidi-font-weight:
normal'>resource set </b>is a collection of related persistent resources. The
resource set manages the collection of resources and produces notifications for
changes to that collection. A <b style='mso-bidi-font-weight:normal'>project resource
set </b>is a resource set defined at the project level, meaning the project
resource set manages the collection of resources for that project. There is
only one project resource set per project, ensuring each resource is only
loaded once within the workspace. Each resource contained in the project
resource set has a <b style='mso-bidi-font-weight:normal'>relative URI, </b>which<b
style='mso-bidi-font-weight:normal'> </b>is a partial URI with respect to or
relative to the project. A <b style='mso-bidi-font-weight:normal'>WTP project
resource set </b>is defined in terms of module resources, which contain
abstract module models (defined later).</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>A <b style='mso-bidi-font-weight:normal'>URI converter</b>
may be configured on a resource set to normalize relative URIs for comparison
and to monitor access to the backing store.<span style='mso-spacerun:yes'> 
</span>The resource set will use this converter to produce an input or output
stream for a URI, during serialization or deserialization of a resource, and
during a load to check for a resource URI match to one of its known resources.</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>An <b style='mso-bidi-font-weight:normal'>abstract module</b>
is a logical, abstracted, first-class model of a deployable artifact. The
initial assumption will be that abstract modules must be contained within one
project and thus use one project resource set.<span style='mso-spacerun:yes'> 
</span>However, a project and the associated project resource set may contain
more than one abstract module.</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 1.5in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span lang=TR style='color:
black;mso-ansi-language:TR'>A <b style='mso-bidi-font-weight:normal'>J2EE a</b></span><b
style='mso-bidi-font-weight:normal'><span lang=TR style='mso-ansi-language:
TR'>bstract m<span style='color:black'>odule </span></span></b><span lang=TR
style='color:black;mso-ansi-language:TR'>is a collection of one or more
components, organized by a standard layout, targeted for the same container
upon deployment</span><span style='color:black'>, and which can be archived
conforming to the J2EE specification. Modules always contain a set of files,
but all J2EE modules also contain specialized files called <b style='mso-bidi-font-weight:
normal'>deployment descriptors</b>. Deployment descriptors describe the
contents of deployment units and configure components and applications to their
environment. They also externalize the relationships between components, so those
relationships can be managed without writing or changing program code. There
are five core types of J2EE deployment descriptors, each of which corresponds
to a type of J2EE deployment unit: <o:p></o:p></span></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 1.5in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l3 level1 lfo7;tab-stops:list 1.0in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>Application<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l3 level1 lfo7;tab-stops:list 1.0in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>Application Client <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l3 level1 lfo7;tab-stops:list 1.0in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>EJB <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l3 level1 lfo7;tab-stops:list 1.0in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>Web <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l3 level1 lfo7;tab-stops:list 1.0in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>Resource Adapter for
Java Connector<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 1.5in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span style='color:black'>Vendor-specific
deployment descriptors may be defined for different </span><st1:City><st1:place><span
style='color:black'>Enterprise</span></st1:place></st1:City><span
style='color:black'> application containers to provide additional information. <o:p></o:p></span></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 1.5in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 1.5in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span style='color:black'>Each
deployment descriptor describes a set of contained objects which are
represented through <b style='mso-bidi-font-weight:normal'>module models</b></span>.<span
style='mso-spacerun:yes'>  </span>The root abstract module model object for the
deployment descriptor is the associated J2EE abstract module type object.</p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 1.5in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><o:p>&nbsp;</o:p></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l6 level1 lfo6;tab-stops:.5in 1.0in list 1.5in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>The <b
style='mso-bidi-font-weight:normal'>Application</b> is the root object for an EAR
module.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l6 level1 lfo6;tab-stops:.5in 1.0in list 1.5in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>The <b
style='mso-bidi-font-weight:normal'>EJBJar</b> is the root object for an EJB
module.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l6 level1 lfo6;tab-stops:.5in 1.0in list 1.5in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>The <b
style='mso-bidi-font-weight:normal'>WebApp</b> is the root object for a Web
module.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l6 level1 lfo6;tab-stops:.5in 1.0in list 1.5in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>The <b
style='mso-bidi-font-weight:normal'>ApplicationClient</b> is the root object
for an Application Client module.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in;line-height:
12.0pt;mso-list:l6 level1 lfo6;tab-stops:.5in 1.0in list 1.5in left 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;color:black'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'>The <b
style='mso-bidi-font-weight:normal'>Connector</b> is the root object for a JCA
Connector module.<o:p></o:p></span></p>
<p class=MsoNormal style='line-height:12.0pt;tab-stops:.5in 1.0in 2.0in 2.5in 3.0in;
mso-layout-grid-align:none;text-autospace:none'><span style='color:black'><span
style='mso-spacerun:yes'> </span></span></p>
<p class=MsoNormal>Before proceeding, it should be noted that there are two
distinct metamodels in the tooling environment. First, J2EE abstract models
allow framework clients to understand the J2EE-specific deployment descriptors
and their third-party extensions. The tooling frameworks are built primarily to
modify and update these models. There is also a separate model for
understanding how modules and their contained resources can be constructed for
deploying to server environments, which is referred to as <b style='mso-bidi-font-weight:
normal'>ModuleCore</b>. </p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>ModuleCore</b> can be
used to acquire, create, and destroy <b style='mso-bidi-font-weight:normal'>abstract
module contexts</b>. An <b style='mso-bidi-font-weight:normal'>abstract module
context</b> is<b style='mso-bidi-font-weight:normal'> </b>used to manage
multiple abstract modules per project. In the first implementation, an abstract
module context will not span multiple projects. Each abstract module context identifies
a unique custom defined abstract module using a module handle (see Server
Tooling), server target type (see Server Tooling), an edit model (to be
discussed later). </p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-insideh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0'>
<td width=590 valign=top style='width:6.15in;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><!--[if mso & !supportInlineShapes & supportFields]><span
style='mso-element:field-begin;mso-field-lock:yes'></span><span
style='mso-spacerun:yes'> </span>SHAPE<span style='mso-spacerun:yes'> 
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span><![endif]--><!--[if gte vml 1]><v:group
id="_x0000_s1067" editas="canvas" style='width:6in;height:198pt;
mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
coordorigin="3960,10104" coordsize="7200,3394">
<o:lock v:ext="edit" aspectratio="t"/>
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_s1068" type="#_x0000_t75" style='position:absolute;
left:3960;top:10104;width:7200;height:3394' o:preferrelative="f">
<v:fill o:detectmouseclick="t"/>
<v:path o:extrusionok="t" o:connecttype="none"/>
<o:lock v:ext="edit" text="t"/>
</v:shape><v:rect id="_x0000_s1069" style='position:absolute;left:4410;
top:10258;width:6300;height:3086'>
<v:textbox style='mso-next-textbox:#_x0000_s1069'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>ModuleCore</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1070" style='position:absolute;left:4560;top:10721;
width:2850;height:1080'>
<v:textbox style='mso-next-textbox:#_x0000_s1070'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>ModuleContext</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1071" style='position:absolute;left:7560;top:10721;
width:2850;height:1080'>
<v:textbox style='mso-next-textbox:#_x0000_s1071'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>ModuleContext</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1072" style='position:absolute;left:4560;top:11955;
width:2850;height:1080'>
<v:textbox style='mso-next-textbox:#_x0000_s1072'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>ModuleContext</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1073" style='position:absolute;left:7560;top:11955;
width:2850;height:1080'>
<v:textbox style='mso-next-textbox:#_x0000_s1073'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>ModuleContext</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1074" style='position:absolute;left:4710;top:11029;
width:1050;height:618'>
<v:textbox style='mso-next-textbox:#_x0000_s1074'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>AbstractModule</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1076" style='position:absolute;left:7710;top:11030;
width:1050;height:617'>
<v:textbox style='mso-next-textbox:#_x0000_s1076'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>Abstract<span style='mso-spacerun:yes'>  </span>Module</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1077" style='position:absolute;left:8910;top:11029;
width:1050;height:618'>
<v:textbox style='mso-next-textbox:#_x0000_s1077'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>Abstract<span style='mso-spacerun:yes'>  </span>Module</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1078" style='position:absolute;left:7710;top:12264;
width:1050;height:617'>
<v:textbox style='mso-next-textbox:#_x0000_s1078'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>Abstract Module</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1079" style='position:absolute;left:8910;top:12264;
width:1050;height:617'>
<v:textbox style='mso-next-textbox:#_x0000_s1079'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>Abstract<span style='mso-spacerun:yes'>  </span>Module</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1080" style='position:absolute;left:4710;top:12264;
width:1050;height:617'>
<v:textbox style='mso-next-textbox:#_x0000_s1080'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>Abstract Module</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1081" style='position:absolute;left:5910;top:12264;
width:1050;height:617'>
<v:textbox style='mso-next-textbox:#_x0000_s1081'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>Abstract Module</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><v:rect id="_x0000_s1156" style='position:absolute;left:5910;top:11030;
width:1050;height:618'>
<v:textbox style='mso-next-textbox:#_x0000_s1156'>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal>AbstractModule</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:rect><w:wrap type="none"/>
<w:anchorlock/>
</v:group><![endif]--><![if !vml]><img width=576 height=264
src="FlexibleProjectConcepts_files/image001.gif" v:shapes="_x0000_s1067 _x0000_s1068 _x0000_s1069 _x0000_s1070 _x0000_s1071 _x0000_s1072 _x0000_s1073 _x0000_s1074 _x0000_s1076 _x0000_s1077 _x0000_s1078 _x0000_s1079 _x0000_s1080 _x0000_s1081 _x0000_s1156"><![endif]><!--[if mso & !supportInlineShapes & supportFields]><v:shape
id="_x0000_i1025" type="#_x0000_t75" style='width:6in;height:198pt'>
<v:imagedata croptop="-65520f" cropbottom="65520f"/>
</v:shape><span style='mso-element:field-end'></span><![endif]--></p>
</td>
</tr>
<tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
<td width=590 valign=top style='width:6.15in;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Figure 1: Overview of ModuleCore, ModuleContext, and Abstract
Module relationships.</p>
</td>
</tr>
</table>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>Meanwhile, <b style='mso-bidi-font-weight:normal'>edit
models</b> provide a shared, reference counted, read/write controlled amalgamation
of a related set of resources. Primarily, resources and Java working copies are
wrapped by an Edit Model in order to represent a coherent and consistent view
for clients. Managing these resources as a group, allows changes to be
committed or rolled back as a consistent unit of work. </p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>Typically, specialized types of edit models have
aforementioned knowledge of their expected or required resources for a given
type of abstracted module. Not surprisingly, clients may wish to add
capabilities and additional known resources to existing edit model. The edit
model will attempt to load these resources so that they may be managed with the
existing, known resources. <o:p></o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>Edit models are created via an extension which defines the <b
style='mso-bidi-font-weight:normal'>edit model factory</b>. The lifecycle of
how edit models are created and destroyed will be covered in the API Concepts
document.</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>Typically, J2EE components are built on a regular schedule
(e.g. daily) and packaged as Enterprise Archives (EARs). Collaboration between
teams and individual members is facilitated by these build artifacts which are
used to back current development. These are referred to as <b style='mso-bidi-font-weight:
normal'>target EARs</b>. Developers set up their development environments so
the components they are actively working on are loaded directly from a source
repository and the other components are loaded from the Target EARs.</p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>The use of target EARs is analogous to self-hosting in
Eclipse. The idea is to only have abstract modules that are currently being
developed in the workspace. All other dependencies will be loaded from a target
EAR. Changing target EARs would simply be a matter of adjusting some abstract module
property (just like PDE).<span style='mso-spacerun:yes'>  </span>Loading
projects from the repository, or deleting them from the workspace would change
where they were loaded from as well (also like PDE).<o:p></o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>Rather than using target EARs, EAR files may be extracted to
a structure which represents its contained abstract modules.<span
style='mso-spacerun:yes'>  </span>The remaining non-module jar archives are
called <b style='mso-bidi-font-weight:normal'>utility jars</b>. Utility jars
are regular jars which the various abstract modules can depend on.<span
style='mso-spacerun:yes'>  </span>Utility jars may exist as jar files within
the EAR abstract module which is useful when a developer is not currently
working on the contents of the utility jar. <span
style='mso-spacerun:yes'> </span>All abstract module archives must (utility
jars have the option) be handled in separate abstract modules.<b
style='mso-bidi-font-weight:normal'><o:p></o:p></b></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>An <b style='mso-bidi-font-weight:normal'>extracted</b> <b
style='mso-bidi-font-weight:normal'>module</b> or <b style='mso-bidi-font-weight:
normal'>utility jar module</b> is simply a module containing the extracted
contents of the archive.<span style='mso-spacerun:yes'>  </span>The benefit of
using extracted modules is all the artifacts can be modified.<span
style='mso-spacerun:yes'>  </span>This would be useful if a developer did not
have access to the source repository.<span style='mso-spacerun:yes'> 
</span>Typically, however, instead of using extracted modules, a developer
would connect to a source repository. Jars within WARs can be extracted as modules
within Eclipse projects (like utility jar modules) or can remain in the WAR in
binary form. </p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
<p class=MsoNormal>Document Concepts</p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-insideh:
.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
<tr style='mso-yfti-irow:0'>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Chuck<span style='mso-spacerun:yes'>  </span>Bridgham</p>
</td>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a href="mailto:cbridgha@us.ibm.com">cbridgha@us.ibm.com</a><o:p></o:p></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Jialin C. Chen </p>
</td>
<td width=295 valign=top style='width:221.4pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a href="mailto:jialin@us.ibm.com">jialin@us.ibm.com</a></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Michael D. Elder</p>
</td>
<td width=295 valign=top style='width:221.4pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a href="mailto:mdelder@us.ibm.com">mdelder@us.ibm.com</a></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Derek Holt</p>
</td>
<td width=295 valign=top style='width:221.4pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a href="mailto:dfholt@us.ibm.com">dfholt@us.ibm.com</a></p>
</td>
</tr>
<tr style='mso-yfti-irow:4'>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>John Lanuti</p>
</td>
<td width=295 valign=top style='width:221.4pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a href="mailto:jlanuti@us.ibm.com">jlanuti@us.ibm.com</a></p>
</td>
</tr>
<tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
<td width=295 valign=top style='width:221.4pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Jason Sholl</p>
</td>
<td width=295 valign=top style='width:221.4pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a href="mailto:jsholl@us.ibm.com">jsholl@us.ibm.com</a></p>
</td>
</tr>
</table>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>