Orientation


This page describes the structure of JumpStart 4.12.n.


Web source is in these locations:
	web
|---src
|---main
|---java
|---jumpstart
|---web
|---components --> .java, .tml, .properties for components eg. Layout.java, Layout.tml
|---pages --> .java, .tml, .properties for pages eg. UserSearch.java, UserSearch.tml
|---services --> .java for services eg. AppModule.java and BusinessServicesLocator.java
|---WEB-INF --> app.properties file for web application-wide messages
Business source is in these locations:
	business
|---src
|---main
|---java --> messageDefs.properties file for business messages
|---jumpstart
|---business
|---domain --> .java for business domain (services and entities eg. SecurityFinderService and User)
|---resources --> .xml for persistence and datasource descriptors
Eclipse compiles the java source to bin/, then runs our collapser and/or exploder to copy all the necessary items to collapsed/ and/or exploded/. Their purpose is explained in Testing: WAR or EAR.

The collapsed/ directory holds a WAR in "collapsed EAR" format:
	collapsed
|---jumpstart.war --> the web layer with business layer embedded
|---WEB-INF
|---classes --> the business and web classes together
The exploded/ directory holds an "exploded" EAR file with this structure:
	exploded
|---jumpstart.ear
|---jumpstart.jar --> the business layer
|---jumpstart.war --> the web layer

Reference These files describe the application structure. They rarely need to change.
enterprise/src/main/resources/META-INF/application.xml  is needed if we're deploying an EAR. It tells the application server that the EAR contains a WAR and a JAR, and it says the WAR handles URLs involving jumpstart.
web/src/main/java/jumpstart/web/WEB-INF/web.xml  tells the web server how to handle jumpstart URLs - it says filter them through Tapestry!
business/src/main/resources/META-INF/MANIFEST.MF  tells the EJB3 server which classpath entries we need (in addition to the ones it provides).
business/src/main/resources/META-INF/persistence.xml  tells the EJB3 server how we want to persist data - the datasource name and some settings.

The only one you're likely to change is persistence.xml. See Tips for more on that.

Tapestry expects a class called AppModule to exist to describe services we want added in:
jumpstart.web.services.AppModule

Examples Here are the pieces involved in logging in:

Layer Source file Location
View LogIn.tml web/src/main/java/jumpstart/web/pages/theapp/
Controller LogIn.java web/src/main/java/jumpstart/web/pages/theapp/
Web messages app.properties web/src/main/webapp/WEB-INF/
Services ISecurityFinderSvcLocal.java
SecurityFinderSvc.java
business/src/main/java/jumpstart/business/domain/security/iface/
business/src/main/java/jumpstart/business/domain/security/
Entity User.java business/src/main/java/jumpstart/business/domain/security/
Business messages messageDefs.properties business/src/main/java/

Here are the pieces involved in editing a user. Many are the same as for logging in:

Layer Source file Location
View UserEdit.tml web/src/main/java/jumpstart/web/pages/theapp/security/
Controller UserEdit.java web/src/main/java/jumpstart/web/pages/theapp/security/
Web messages app.properties web/src/main/webapp/WEB-INF/
Services ISecurityFinderSvcLocal.java
SecurityFinderSvc.java
ISecurityManagerSvcLocal.java
SecurityManagerSvc.java
business/src/main/java/jumpstart/business/domain/security/iface/
business/src/java/main/jumpstart/business/domain/security/
business/src/java/main/jumpstart/business/domain/security/iface/
business/src/java/main/jumpstart/business/domain/security/
Entity User.java business/src/main/java/jumpstart/business/domain/security/
Business messages messageDefs.properties business/src/main/java/

Tapestry locates components that aren't pages a little differently. For example, the "Layout" component:

Layer Source file Location
View Layout.tml web/src/main/java/jumpstart/web/components/theapp/
Controller Layout.java web/src/main/java/jumpstart/web/components/theapp/

©2006, 2007 Geoff Callender, Sydney, Australia