| <?xml version="1.0" encoding="utf-8"?> | |
| <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" | |
| "concept.dtd"> | |
| <concept id="cjcircle" xml:lang="en-us"> | |
| <title outputclass="id_title">Cyclical dependencies between J2EE modules</title> | |
| <shortdesc outputclass="id_shortdesc"></shortdesc> | |
| <prolog><metadata> | |
| <keywords><indexterm>cyclical dependencies<indexterm>overview</indexterm></indexterm> | |
| <indexterm>projects<indexterm>cyclical dependencies</indexterm></indexterm> | |
| <indexterm>J2EE modules<indexterm>cyclical dependencies</indexterm></indexterm> | |
| </keywords> | |
| </metadata></prolog> | |
| <conbody outputclass="id_conbody"> | |
| <p outputclass="anchor_topictop">A cyclical dependency between two or more | |
| modules in an enterprise application most commonly occurs when projects are | |
| imported from outside the Workbench. When a cycle exists between two or more | |
| modules in an enterprise application, the <tm tmclass="special" tmowner="Sun Microsystems, Inc." | |
| tmtype="tm" trademark="Java">Java</tm> builder cannot accurately compute the | |
| build order of the projects. Full builds fail under these conditions, or require | |
| several invocations.</p> | |
| <p>Therefore, the best practice is to componentize your projects or modules. | |
| This allows you to have your module dependencies function as a tree instead | |
| of a cycle diagram. This practice has the added benefit of producing a better | |
| factored and layered application.</p> | |
| <p outputclass="anchor_topicbottom"></p> | |
| </conbody> | |
| </concept> |